読者です 読者をやめる 読者になる 読者になる

すがブロ

sugamasaoのhatenablogだよ

そろそろはてなから送られてくるメールについて一言言っておくか

メール rfc

気になっていたのだけど

はてなからのお知らせメールって、設定しておくと PC 宛に送ってくれますよね。
内容ははてなスターがいくつ、だとかトラックバックされた、といった案内のメールとかなのだけど、おれはこのメールを「一日に一度送信する」という設定にしています。
送信の頻度は大した話では無いのだけど、その時送られてくるメール形式が気になってしょうがないんですよ。
前は PC でしか見ておらず、自分が使っているメーラー*1が上手い事やってくれていたおかげで、実害がなかったのだけど、gmail のアカウントを iPhone からも見るようにしたところ、実害が発生するようになったので、気になりまくりんぐなのですね。
実害が何かというと、「You have new messages.」以降のメッセージが読めないんです><

で、気になるのって何よ

はてなからメールが送られてくる時、以下のように一通のメールにまとめて送られてきます。
例えば、以下の例は ThunderBird の例だけど、これを見ると添付ファイルとしてメールがくっついてくるのと同時に、本文に添付されたメールの内容一緒に表示されている。

ここの表示って、各添付メール(便宜上、そう呼ぶよ)の Content-Dispotision が inline なので、本文に表示されるのが正しいメーラーとしての実装なんですね。

Content-Disposition: inline

これね。 RFC によると

2.1 inline ディスポジションタイプ

  もしディスプレイ上にメッセージが自動的に表示される事を意図してい
  るなら、bodypart は `inline' としてマークされるべきである。マルチ
  パートメッセージの普通のセマンティクスから、inline bodypart が存
  在する順序で提示されるべきである。

となっているので、RFC に準拠するのであれば、上記の ThunderBird のキャプチャーもメールの扱い方はちょっとおかしくて、本文にメールの内容を表示するだけで良く”添付ファイルとしても扱っている”のは RFC 仕様外の動作なんですね。
ちなみに、添付ファイルとして扱うには

Content-Disposition: attachment

とするのが正しいというか、本来の値です。
なので、添付ファイルとしてメールをまとめているのであれば、 attachment にしてほしいな、と思うんです。

というわけで

おれとしては、この件については二つの可能性を考えているんです*2

はてなは inline で扱って欲しいと思っている

そもそもこれらは「まとめて送っている」ものですから、添付ファイルとして扱うつもりは毛頭なく、仕様通り inline で扱って欲しいと考えている説。
この場合、はてなには全く非は無く、iPhone 頑張ってよ、という話ですね。

inline である事に気が付いていなかった(もしくは、意図せずそうなっていた)

こっちの可能性が正しいのであれば、直してほしいと思うので、このエントリを書きました。
たしか、perl の標準添付されている MIME を扱うクラスを使うと*3、マルチパートメールの Content-Disposition が inline にしかできない*4、みたいな動作があったはずなので、そっちに巻き込まれてるのかなーとか思う。
余談ですが、一年ちょっと前に、その動作に巻き込まれてわざわざ inline のファイルを添付ファイルとして見なす、という実装をした事があるwww

まとめると

はてなさん、もし添付ファイルとして扱う方が意図している動作なら、Content-Disposition を変更してくれると嬉しいです><

最後に

このエントリを書こうと思った最後の踏ん切りを与えてくれたのは、先日の id:syou6162 との Twitter 上でのやりとりでした。ありがとう、ありがとう><

*1:ThunderBird

*2:だからこそ、気が付いてから今までエントリにしようと思わなかったんですけどね

*3:名前は覚えてないけど

*4:perl は詳しくないので、調査不足かもしれないけれど