【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";
これを発見するのに一日費やしてしまった・・。
メールヘッダの仕様細かすぎんよ・・。