kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

メールの1行は1000バイトまで

メールには1行あたりの制限があり、超えて送信するとクライアントアプリにより文字化けするケースがある

rfc2822に1行あたりの制限の内容が記載されている

2.1.1. 行の長さの制限
この仕様が 1 行の文字数に課す制限は二つある。CRLF を除いて、各行は 998 文字を超えてはならならず(MUST)、78 文字を超えるべきではない(SHOULD)。

iso-2022-jpの場合、1文字あたり8バイトになるため120文字あたりで発生する。78文字を超えるべきではないを適用していれば安全。

他にも

プロジェクトにメール機能を作ると意外と知らないエラーに遭遇する

utf-8で送ると文字化け ・メールアドレスのルール

utf-8で送ると文字化け

日本語の場合は、クライアントアプリしだいで文字化けするケースが多々ある。マルチバイトについては正直しょうがないとおもっているが、新しいクライアントアプリを使用できるようにしてほしい。

iso-2022-jpに変換して送るようにすると大体解決する。

日本の企業だとアプリを変えることもできないところがあるらしい。いまだにIE11で動作する必要があるってどういう環境?

メールアドレスのルール

RFCに準拠していないメールアドレスがあり送信できないケース。調べてみるとキャリアにより違反ケースのアドレスが作れていたらしく、実際にアドレスとして存在可能

ただし大半のアプリケーションは送信できないため送受信できるケースが限られる。同じキャリアなら受信できるらしい。

違反ケース例

2連続のドット「..」が使用されていたり、@マークの直前でドット「.@」を設定しているアドレスを指します。
(例)docomo..ab1234yz@docomo.ne.jp、docomo-ab1234yz.@docomo.ne.jp

参考

RFC2822(Internet Message Format)

RFC5321(Simple Mail Transfer Protocol)

RFC5322(Internet Message Format)

特殊な形式のアドレス(RFC違反アドレス)のご利用について | ドコモメール | サービス・機能 | NTTドコモ