PHPでメール送信

(1/2)
PHP にはメール送信関数  mail  があるが、日本語でメールを送る場合は、 mb_send_mail  関数が使いやすい。

サンプル・プログラム

ダウンロード(PHP4/5共用)

メールサーバの設定

PHP でメール送信を行うためには、まず、メールサーバ(SMTP サーバ)を php.ini に設定する必要がある。
Linux であれば、"sendmail_path =" の部分に sendmail のあるパスを記述する。
Windows では、SMTP サーバが起動していることは無いだろうから、"SMTP = " の部分にプロバイダと契約しているメールサーバのアドレスを記述する。また、"sendmail_from ="の部分には送信者メールアドレスを記述する。プロバイダから提供されているメールアドレスを書いておけばよいだろう。

セキュリティ上、注意すること

ユーザー変数 $MailTo に送信先メールアドレスを設定している。

0013: /**
0014:  * 送信先メールアドレス
0015:  * ※セキュリティ上、固定にすべき!!
0016:  * @global string $MailTo
0017: */
0018: $MailTo = 'yourname@domain';

PHP でメール送信プログラムを作るときは、送信先メールアドレスは固定にすべきだ。
というのは、入力フォームから自由にメールアドレスを送信できるようなプログラムを公開すると、スパムメール業者の踏み台になってしまうからだ。あなたの意図に反し、業者はそのフォームを利用してスパムをばらまき、最悪の場合、プロバイダからアカウントを停止されてしまう。今回、このページからサンプルプログラムを実行できないようにしてあるのも、セキュリティ上の配慮からである。

サンプル・プログラムの解説:エンコードと送信

0008: mb_language('ja');                    //mb_send_mailが参照するため
0009: $InternalEncoding = 'EUC-JP';
0010: mb_internal_encoding($InternalEncoding);
0011: $MySelf = basename($_SERVER['SCRIPT_NAME']);

0083: else {
0084:     mb_internal_encoding('EUC-JP');
0085:     $subject = stripslashes($_POST['subject']);
0086:     $message = stripslashes($_POST['message']);
0087: 
0088:     $subject = mb_convert_encoding($subject, 'EUC-JP', 'SJIS,EUC-JP,UTF-8');
0089:     $message = puts_format($message, 80);        //本文は80桁で自動改行
0090: 
0091:     $res = mb_send_mail($MailTo$subject$message);    //メール送信
0092:     $msg = ($res == FALSE) ? '送信失敗' : '送信成功';
0093: 

入力フォームから受け取った件名 $subject と本文 $message を、 mb_send_mail  関数に渡して、メールを送信する。
space
このプログラムでは入力フォームは EUC-JP だが、関数  mb_send_mail  渡った後に、関数  mb_language  の設定に基づいて自動的にエンコードが行われる。
なお、関数  mb_send_mail  が正しくエンコード処理を行うことができるよう、関数  mb_language 、 mb_internal_encoding  を正しく設定しておく必要がある。
この項つづく
header