メールの送信 mb_send_mail

PHP

メールの送信、単純に送れはしていたんですが、
細かいところを気にしだすと、手こずりました・・

サーバーにphpファイルをアップすれば、メールは飛びはするんですが・・

◆gmail→ なんか送信元に”経由”って文字が!

一からPHPでサイトを作って育てる記録!

◆hotmail→ 迷惑メール入り!

うーむ。なんとかなるのかなーと思っていろいろ調べてある程度のところまでやったのでメモ。

まず基本は以下のサイトが参考になりました。

send_mailやmb_send_mailでメールが届かない場合

しかし!そのままやっても文字化け。

まず、私は全部UTF-8なのでメールの文字コードもUTF-8にしており。。
google先生によると日本語メールはISO-2022-JPが一般的なようなこともチラホラ・・

でもISO-2022-JPにすると文字化けするんだよ!やり方が悪いのか・・
結局以下のような記事もあり、UTF-8のまま突き進んだ。

PHPによるUTF-8メールの送信方法

何通りもやり直して◆文字化けしない◆経由が出ない◆迷惑フォルダに入らない
方法を探し出す。
その結果一旦以下にて落ち着きました。

————
$subject = “タイトルだよ”;
$body = “$name 様 本文だよ本文だよ”;

mb_language(“Ja”) ;
mb_internal_encoding(“UTF-8”);

$header = “MIME-Version: 1.0\n”
. “Content-Transfer-Encoding: BASE64\n”  (←※1)
. “Content-Type: text/plain; charset=UTF-8\n” (←※2)
. “Message-Id: <” . md5(uniqid(microtime())) . “@送信元ドメイン.com>\n”
. “From:” .mb_encode_mimeheader(“送信元お名前”) .”<test@送信元ドメイン.com>\n”;

mb_send_mail
($atesakimail, $subject, $body, $header, “-f test@送信元ドメイン.com”);
————

↓検証結果めも

mb_send_mail()のかっこの中にmb_encode_mimeheaderを入れると文字化け?
 →×mb_send_mail($atesakimail, $subject, $body, mb_encode_mimeheader($header), “-f test@送信元ドメイン.com”);

※2 が無いと、hotmailで改行の幅がでかい。(リッチに思われる?)

※1 が「7bit」 で ※2 がUTF-8 だと文字化け。
 →7bitをBASE64へ変更すると直った。

mb_send_mail()の第5引数 が無いと、gmailで”経由”でるし、hotmailは迷惑入り。
 →第5引数があればダイジョブ^^


ということで上記コードがベストかと思いきや、
gmailにて着たメールに返信しようとすると、返信先が自分(送信先の人自身)になってる・・!

ということで、1回”Reply-To:test@送信元ドメイン.com”をFeomの次の行に追加したのですが。
gmailは何も変わらず、hotmailはこれにより迷惑入りになったのであわてて削除。

一旦、このまま。


mb_convert_encodingを入れて、ISO-2022-JPにして、という形でも行ける組合せはあると思う。

あと、なんだかサーバーによっても違うようだし、
私はgmailとhotmailしか検証していないんだけど、メールは深いですね。。

本当はmb_send_mailなんて使わずに、PEAR::Mail等のライブラリを使うほうがベターということみたいなので
今度挑戦したいです。

ちょっとまだ発展途上ですがご指摘あればコメント頂ければと思います。

—–

コメント

タイトルとURLをコピーしました