PHPからmb_send_mail()でメールを送信する
PHPを使って、メールを送信する方法です。PHPでメールを送る事が出来ると、例えばブログの更新に合わせてメールで通知する事が出来る、他にはコメントの返信があった場合にメールで通知する事が出来る。送る相手によって名前部分や本文部分が変わるようなメールの場合も便利ですね。
PHPからmb_send_mail()を使ってメールを送信する方法
PHPからメールを送信する場合には mail() を使って送信する事が出来ます・・・が!マルチバイト文字では文字化けしてしまうので、日本語環境の場合にはマルチバイト文字に対応した mb_send_mail() を最初から使いましょう。
mb_send_mail() には4つの引数を渡して使う
$send_mail = mb_send_mail($to, $title, $content, $from);
mb_send_mail() には4つの引数を渡して実行をするのですが、それぞれの引数には次のものが入ります
- 第一引数 – 送信先のメールアドレス
- 第二引数 – メールのタイトル
- 第三引数 – メールの本文
- 第四引数 – メールの送り元
そして、mb_send_mail()には返り値がありますのでそれを受け取って、メールが送信が成功したかどうかをチェックする事が出来ます
第一引数に入るもの
$to = "user-one.example.com";
メールアドレスを普通に入れるだけでOKです。複数のメールアドレスに送信したい場合はカンマ(,)で区切ってやれば複数指定可能です。
複数の送信先の場合
$to = "user-one.example.com,user-two.example.com";
第二引数に入るもの
$title = "ご無沙汰しております";
引数にはメールのタイトルを入れます。こちらもテキストを入れるだけで特に特別なことをする必要はありません。
第三引数に入るもの
$content = "おひさしぶりです\nまたお食事にでも行きましょう。";
第三引数には、本文を記入します。本文もタイトルと同様にテキストを入れます、文字の改行はバックアップとn(\n)で出来ます。
第四引数に入るもの
$from = "From: my-mail@example.com\r\n"; $from .= "Return-Path: my-mail@example.com";
第四引数には、送信元のメールアドレスが入りますが、フォーマットがあります。まず From: が必須です、上記の例の様に From: のあとにメールアドレス、そして \r\n と入れます。次のReturn-path は必須ではありませんがこちらが無いと相手方が受信できないケースがあるので指定します。
マルチバイト文字の指定
mb_send_mail() に入れる内容は一応紹介した分で動きます。他にも色々付け加えることが出来ますが、これが最小構成となります。そして、忘れてはいけないのがマルチバイト文字の指定です マルチバイト文字用のmail()を使っていますが まだマルチバイト文字が指定されていません! なので mb_send_mail() よりも前の位置で日本語の設定をします
mb_language("Japanese"); mb_internal_encoding("UTF-8");
言葉に日本語(japanese) 文字エンコードに UTF-8 を指定して日本語の設定が完成です。
メールの送信が成功したか確認する
ここまで説明してきたものをまとめるとメールの送信が出来るわけですが、問題なくメールの送信が出来たかチェックします
//文字指定 mb_language("Japanese"); mb_internal_encoding("UTF-8"); //メールの内容 $to = "user-one.example.com,user-two.example.com"; $title = "ご無沙汰しております"; $content = "おひさしぶりです\nまたお食事にでも行きましょう。" $from = "From: my-mail@example.com\r\n"; $from .= "Return-Path: my-mail@example.com"; //メールの送信 $send_mail = mb_send_mail($to, $title, $content, $from); //メールの送信に問題ないかチェック if ($send_mail) { echo "ok"; } else { echo "no"; }
最後にifを使ってメールが送信できたかチェックできます。ただ、これはPHPでの動作に問題ないかをチェックするものなので、メールサーバ側の設定が正しく出来ていない場合などはこちらでOKとなってもメールが送信出来ていない場合があります。メールの送信にはPHPの設定ファイルで指定されているメールサーバが利用されます。
COMMENT