添付ファイル名に使えない文字(長文)
先日会社で使っているEntourageで、日本語ファイル名のファイルを添付して社内の人へメールを送信しようとしたところ、社内のメールサーバが「RFC822規約違反」のエラーで刎ねてしまう、という事象に遭遇しました。添付ファイル名に問題がありそうとわかり、含まれている文字でいろいろテストしてみますと「あ」や「ア」の文字がダメとわかりました。他の文字ではだいたい問題ないようです。Mail.appでやってみても同じでした。しかし、WindowsのOutlook ExpressやThunderbirdでは問題ありません。
さて何が問題なのか、メールソースの添付ファイル名の部分を調べてみると、以下のことがわかりました。
- Entourage、Mail.appともに、添付ファイル名は「Contents-Typeフールドのnameパラメータ」と「Contents-Dispositionフールドのfilenameパラメータ」の両方に書かれている。前者はiso-2022-jpでエンコードされたものが、後者はRFC2231形式で入っている。
- Windowsのメーラでは、両方にiso-2022-jpエンコードを更にMIME-Bでエンコードしたものが入っている。
RFC規約では、添付ファイル名は「Contents-Dispositionフィールドのfilenameパラメータに入れるべきで、ASCII以外の文字の場合はRFC2231に従ってエンコードするのが正しいはずです。つまり、Macのメーラの方が正しいのですが、RFC2231が比較的新しい規約で、これに従ってない多くのWindowsメーラの蔓延で、MIME-Bでエンコードされたものがまかり通っているのが実情のようです。
ところが、今回の問題はContents-Typeのnameフィールドの方をメールサーバがRFC822規約違反と判断したのです。このフィールドは本来添付ファイル名としての意味はないはずなのですが、MIME-Bエンコードされない生のiso-2022-jpでは「あ」は「$"」、「ア」は「%"」でともに「"」が含まれます。これがファイル名全体を囲む「"」とコンフリクトし、正しいヘッダではないと判定されたようです。
ちなみに、他にiso-2022-jpで「"」が含まれる文字は「、」や「帳」などがあり、これらを含む添付ファイル名ではいずれも同じエラーになりました。
RFC822では、メールヘッダで使用出来る文字を限定しており、生のiso-2022-jpは使えないのは確かです。でも、このContents-Typeフィールドがメールヘッダなのかメール本体かといえば、後者と見るのが普通のように思えます。
このエラーを吐くメールサーバはそれほど多くないのかもしれません。このボードでもこのエラーについての書き込みは(以前あったのかもしれませんが)見かけないし、実際自宅で使用しているISPのメールサーバでは問題ありません。会社でもEntourageを4年半使ってきて初めてこのエラーが起こったので、会社のメールサーバが最近変更された可能性が高いと思っています。
皆さんのところではいかがでしょうか?また、どなたかこの問題に詳しい方の意見をお聞かせ願えないでしょうか?