header

PHPでメール送信

(2/2)

メールサーバの設定

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

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

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

今回、このページからサンプルプログラムを実行できないようにしてあるのも、セキュリティ上の配慮からである。

解説

プログラム自身は簡単である。
入力フォーム(66〜74行目)から受け取った件名 $subject と本文 $message を、 mb_send_mail 関数に渡して(93行目)、 メールを送信する。
このプログラムでは入力フォームはシフトJISだが、 mb_send_mail 関数に渡す前に、 件名は JISコードに(87行目)、本文は EUC-JP コードに変換しておく。
また、mb_send_mail 関数が正しくコード変換を行うように、 事前に、mb_language 関数と  mb_internal_encoding 関数を使って、 日本語 EUC-JP で本文が記述されていることを明示する必要がある(90〜91行目)。
mb_send_mail 関数で送信元を指定することもできる。第4引数に

mb_send_mail($MailTo, $subject, $message, "From: hogehoge@pahoo.org");

のように追加ヘッダ情報として与えてやればよい。

受信者が読みやすいように、本文は 80 桁(半角換算)で折り返すようにした。これを行うのが ユーザー定義関数 puts_format である。この関数の中で、折り返すと同時に EUC-JP への変換も行っている。

参考URL

(この項おわり)