Authentication




Cancel OK
B!コメントする  2012-11-12 14:28:00 by old

PHPのmailでメール送信

日本語メールを送信するとなるとちょっと面倒なことや文字コード関連が出てきます。
mbsendmailや外部のモジュールを使えば解決することが多いですが、そういうのが使えない
ある意味「縛り」プレイのあるサーバーでメールを送信しないといけないことがあります。
そんなときに以下のものでサクっと送ることが多いです。

/
* POST受信
*/
$to = $_POST['mail'];
$subject = $_POST['subject'];
$body = $_POST['body'];

$from_email = $_POST['from'];
$from_name = $_POST['from'];

/

* 文字コード及びヘッダー
/
mblanguage("Japanese");
mb
internalencoding("UTF-8");

$headers = "MIME-Version: 1.0 \n" ;
$headers .= "From: " .
"".mb
encodemimeheader (mbconvertencoding($fromname,"ISO-2022-JP","AUTO")) ."" .
"<".$fromemail."> \n";
$headers .= "Reply-To: " .
"".mb
encodemimeheader (mbconvertencoding($fromname,"ISO-2022-JP","AUTO")) ."" .
"<".$fromemail."> \n";

$headers .= "Content-Type: text/plain;charset=ISO-2022-JP \n";

$body = mb
convertencoding($body, "ISO-2022-JP","AUTO");

$sendmail
params = "-f$fromemail";

mb
language("ja");
$org = mbinternalencoding();
mbinternalencoding("ISO-2022-JP");
$subject = mbconvertencoding($subject, "ISO-2022-JP","AUTO");
$subject = mbencodemimeheader($subject);
mbinternalencoding($org);

/

* メール送信
*/
mail($to, $subject, $body, $headers);


環境によって文字コードをUTF-8以外に指定する必要がありますが、だいたいこれでうまいこと飛びます。
一応確認は

GMAIL
ThunderBird
iPhone5のSNSメール
Outlook Express

の4つのメーラーで確認しているので大丈夫とは思う。
他にもちょっと手を加えたほうがいいと思うところもあるけど、あんましいじると大抵の環境で使えなくなるので基本的にこんな感じでイケるパターンを掲載。

こういうテンプレ1つあると少しラクになることあるんで頭の片隅においておくと良いかも。


PHP  

  • コメント
  • コメントはまだありません