Encode an international filename and provide a fallback
03filename* uses an extended character-encoding form. UTF-8 bytes and percent escapes can carry a name such as € rates without guessing the header encoding.
A separate legacy recipient without filename* support ignores that parameter and uses EURO rates. This fallback need not reproduce the original name exactly and does not certify older software as conforming today.
Source for this drawing: RFC 6266 · Read RFC section 4.3 ↗
New to this? Start hereA quick picture + helpful background
A message needs an address.
Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
Terms in this drawing
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
Decode the declared bytes, then choose the appropriate advisory name.
- filename* uses the extended parameter syntax: charset, an optional language, and the encoded value separated by apostrophes. The illustrated UTF-8 example leaves the language empty.
- When both filename and filename* are present, recipients SHOULD choose filename* and ignore filename. A legacy recipient that does not implement the extension can use the filename fallback.
- RFC6266 Appendix D advises UTF-8, an ASCII fallback where possible and filename before filename* for older implementations. Original reference5987 is superseded by8187, whose producers MUST use UTF-8. Do not generalize filename* decoding into percent-decoding plain filename or using MIME encoded-words.
The public§5 name € rates encodes the euro sign as E2 82 AC; %20 encodes the space. UTF-8 is a character encoding, not encryption. Supporting current RFC8187§3.2/§3.2.1 covers this same valid syntax; no fixed malformed-input recovery algorithm is invented. Legacy behavior is historical compatibility, not a current conformant implementation skipping required support.
Read the RFC section ↗