月別アーカイブ: 2015年1月

Fwd: PHPからのメール送信・改行コード

Outlookで、PHPから送信したメールの改行が反映されないことが頻発。
原因をしらべた。

—————————————————————-
qmail の RFC 違反
[http://ya.maya.st/mail/qmail-violations.html]

■qmail-smtpd
CR+LF を LF に変換する。
単独の LF は一時エラーにする。

■qmail-inject
改行コードの変換はしない。
ただし、ヘッダの追加、書き換えのあった行については LF になる。

■qmail-local
改行コードの変換はしない。

■qmail-remote
LF を CR+LF に変換する。
すでに CR+LF だった場合は CR+CR+LF になる。

■qmail-pop3d
RETR/TOP に対しては LF を CR+LF に変換して返す。
LIST/STAT には変換前のサイズを返す(上述)。
—————————————————————-

送られてくるメールをみてみると、
○○○○○○○○○○○○○○○○○CR
CRLF
○○○○○○○○○○○○○○○○○CR
CRLF
○○○○○○○○○○○○○○○○○CR
CRLF
となっているので、

借りてるサーバーが、qmail-remoteで、CRLFで改行してると、
LFがCRLFになって、結果CRCRLFとなっているのでしょう。

さらに、おどろくべきことに、Outlook2002/2003とかだと、
CRCRLFという一連の流れを半角スペースとして表示するらしい。

qmailの場合はLFで処理しないと駄目ってことか。

ちなみに、SMTP/POP3 の改行コードは CR+LF と規定されているみたい。