メールサーバの設定
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
| 2006年10月22日更新 | ||
| <<前へ | <目次> | 次へ>> |
| 戻る | 【関連ページ】 | |