phpプログラムからメール送信すると、相手先のメールサーバーでスパム判定されて受信拒否されたり、メールソフトのスパムフォルダに振り分けられたりすることがあります。
これまで、semdmailの設定を細工したりヘッダ情報を書き換えたり、いろいろ苦労してきたんですが、普段使っているISPやメール用レンタルサーバーのSMTPサーバーを経由して送信するのが有効でした。
一番手っ取り早いのが「Qdmail」と「Qdsmtp」というツールを使う方法です。
使い方は簡単で、この二つのツール(「qdmail.php」と「qdsmtp.php」)をメール送信するphpプログラムと同じディレクトリに置き、phpのメール送信部分(mail()、mb_send_mail()等)を下記の通り書き換えるだけです。
require_once(‘qdmail.php’);
require_once(‘qdsmtp.php’);
$mail = & new Qdmail();
$mail -> smtp(true);
$param = array(
‘host’=>’smtp.example.com’, ←(SMTPメールサーバー名)
‘port’=> 587 , ←(SMTPポート:587 or 25)
‘from’=>’from@example.com’, ←(Return-path)
‘protocol’=>’SMTP_AUTH’, ←(または ‘SMTP’ )
‘user’=>’user_id’, ←(SMTPサーバーのユーザID)
‘pass’ => ‘password’, ←(SMTPサーバーのパスワード)
);
$mail -> smtpServer($param);
$message=”メール本文”;
$mail ->to(‘to@address.com’); ←(相手先メールアドレス)
$mail ->subject(‘メールのタイトル’);
$mail ->from(‘from@example.com’); ←(送信者メールアドレス)
$mail ->text($message);
$return_flag = $mail ->send();
※指定するSMTPサーバーのユーザIDは実際に使用可能なアカウントが必要です。
※上記の相手先メールアドレスと本文の内容は、実際にはプログラム内で生成・代入した変数で指定しています。
先日も、あるサーバーのphpプログラムから送信したメールがスパム判定されて相手先に届かないということで困っていたんですが、このツールを置いてメール送信部分を書き換えてみたところ、問題なく届くようになりました。
※上記設定時にphpプログラムでメール送信ボタンを押してから送信完了になるまで時間がかかる場合、上記で設定したsmtpサーバーのIPアドレスを調べて/etc/hostsファイルに追加すると改善されるかもしれません。
EX:123.456.78.90(smtpサーバーのIPアドレス) smtp.example.com