【PHP】添付ファイル付きのメールを送信したら中身が見れない !
以下の記事みたいな感じで、PHPで添付ファイル付き(pdf)のメールを送信する処理を作った。
qiita.com
しかし、受信メールをメーラーで確認すると、ファイルが0KBになってしまって中身が見られない・・。
GmailのようなWeb上のメーラーだと見られるんだけど、Outlookみたいなデスクトップのメーラーだと見られない。
結論から言うと、以下の添付ファイルを書き込む処理の最後に、一つ改行が足りないのが原因だったらしい。
$filetitle = mb_convert_encoding($filetitle, 'ISO-2022-JP');
$filetitle = "=?ISO-2022-JP?B?" . base64_encode($filetitle) . "?=";
$body .= "Content-Type: {$mime_type}; name=\"{$filetitle}\"\n" .
"Content-Transfer-Encoding: base64\n" .
"Content-Disposition: attachment; filename=\"{$filetitle}\"\r\n";
$body .= "\r\n"; //★ここを追加!
$f_encoded = chunk_split(base64_encode($filebody));
$body .= $f_encoded . "\r\n";これを発見するのに一日費やしてしまった・・。
メールヘッダの仕様細かすぎんよ・・。