What is MIME type "multipart/related"?
A MIME type is a string that tells browsers and other tools how to handle a particular kind of file.
multipart/related is a MIME type that groups different pieces of content that are meant to work together. It bundles a primary file and its related resources so they can be sent or stored as one unit.In practice, one part is marked as the main resource. Other parts (like images, style sheets, or scripts) support it. This setup ensures all pieces are available when the file is viewed. For example, web pages saved in MHT or MHTML format use this MIME type to keep content and resources together.
- Use Case: Bundling an HTML file and its images, styles, and scripts together.
- Use Case: Packaging email messages with embedded media.
- Key Fact: It ensures that the main content and its dependent parts are delivered simultaneously.
- Key Fact: It uses boundaries to separate parts within the same message.
For more details on how related parts are defined and assembled, see the RFC 2387 on multipart/related.
Associated file extensions
Usage Examples
HTTP Header
When serving content with this MIME type, set the Content-Type header:
Content-Type: multipart/related
HTML
In HTML, you can specify the MIME type in various elements:
<a href="file.dat" type="multipart/related">Download file</a>
Server-side (Node.js)
Setting the Content-Type header in Node.js:
const http = require('http');
http.createServer((req, res) => {
res.setHeader('Content-Type', 'multipart/related');
res.end('Content here');
}).listen(3000);
Associated file extensions
FAQs
What is the main purpose of the multipart/related MIME type?
The multipart/related type is used to bundle a primary resource (like an HTML document) with other resources it depends on (such as images, CSS, or scripts) into a single entity. It is standard for saving web pages as MHTML archives and for embedding inline images within emails.
How do I configure Apache to serve .mht files correctly?
To serve Web Archive files correctly, add the MIME type definition to your .htaccess file or main configuration. Use the directive: AddType multipart/related .mht .mhtml. This tells the browser to treat the file as a bundled document.
What is the difference between multipart/related and multipart/mixed?
multipart/related implies that the parts are dependent on each other to render the main content, such as an email body referencing an embedded image. In contrast, multipart/mixed is used when parts are independent, such as an email text with a separate PDF attachment.
Can I use multipart/related in REST APIs?
Yes, developers often use this MIME type in APIs to return a JSON or XML object alongside binary data (like a file download) in a single HTTP response. This reduces overhead by avoiding separate requests for metadata and the actual file content.
Which browsers support opening multipart/related files?
Chromium-based browsers like Google Chrome and Microsoft Edge handle .mht and .mhtml files natively. Mozilla Firefox generally requires an extension or specific configuration settings to render these web archives correctly.
Are there security risks with multipart/related files?
Yes, because these files can contain executable scripts (JavaScript) alongside HTML, they can be used for cross-site scripting (XSS) attacks or phishing if opened locally. Treat unknown .mht files with the same caution as you would an unknown .html file.
Why do my emails use multipart/related headers?
If you insert an image directly into the body of an email (inline) rather than attaching it, the email client uses multipart/related. This links the image data to a specific spot in the HTML body using a Content-ID, ensuring the image displays where you placed it.
General FAQ
What is a MIME type?
A MIME (Multipurpose Internet Mail Extensions) type is a standard that indicates the nature and format of a document, file, or assortment of bytes. MIME types are defined and standardized in IETF's RFC 6838.
MIME types are important because they help browsers and servers understand how to process a file. When a browser receives a file from a server, it uses the MIME type to determine how to display or handle the content, whether it's an image to display, a PDF to open in a viewer, or a video to play.
MIME types consist of a type and a subtype, separated by a slash (e.g., text/html, image/jpeg, application/pdf). Some MIME types also include optional parameters.
How do I find the MIME type for a file?
You can check the file extension or use a file identification tool such as file --mime-type on the command line. Many programming languages also provide libraries to detect MIME types.
Why are multiple MIME types listed for one extension?
Different applications and historical conventions may use alternative MIME identifiers for the same kind of file. Showing them all helps ensure compatibility across systems.