3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(PHP)日本語メール送信

レンタルサーバ上でのメール送信フォーム作成メモです。

phpにはデフォルトでsendmailが扱えるようになっているらしいですが、Windowsだとphp.ini,Linuxだとsendmail_pathの設定等が必要ですが、基本的にレンタルサーバ側がこれらを設定しててくれてるはずです。(アイルだとそうでした)

ということでPHP側からのメール送信は非常に簡単です。
基本的に mb_send_mail 関数を使うだけでOKです。

そのまま送ると送信元が、nobody@shared-server.netとかになっていたので、送信元の書き換えです。
mb_send_mail関数の第4引数にメールヘッダを設定できるみたいなので "From:送信元アドレス" で送信元のアドレスを変更します。なお、送信元アドレスのコメントに日本語を使うには mb_convert_encoding で文字コートをJISに変更した後、mb_encode_mimeheaderでMIMEエンコードしてやる必要があるようです。

(どっかで本文もMIMEエンコードが必要だとかあった気がしますが、それをしなくてもできたのでOKとします。)

//mb系関数を使うための前処理
mb_language("Japanese");
/* 内部文字エンコーディングUTF-8に設定 */
mb_internal_encoding("UTF-8");
 
//メール送信

$mailTo = "info@example.com";
$mailFromAddr = "<info@example.com>";
$mailSubject = "メール題名";
 
//送信元に日本語付加

$mailFrom = mb_encode_mimeheader(mb_convert_encoding("【自動送信フォーム】","JIS","UTF-8")). $mailFromAddr;

 
//メール本文。
$mailBody = "メール本文。";
 
//メール送信(送信先、   件名、         本文、     送信元)
if( mb_send_mail( $mailTo , $mailSubject , $mailBody ,"From:" . $mailFrom ) ){

  //メールが正常に送れたら
  $res =  "送信成功";
}else{
  //メールが送れなかったら
  $res =  "送信失敗";

}
 
echo $res;


参考:
PHPで日本語メールを送る - 基本編
PHPでメール送信