2009年7月13日月曜日

PHP でローカルにおけるメールの送信テスト - MELON

メールを送信するためのテスト用のコードを

を参考にして作成。

<?php
function sendmail($to, $subject, $body, $from){
 $body = mb_convert_encoding($body, 'iso-2022-jp', 'UTF-8');
 $subject = mb_convert_encoding($subject, 'iso-2022-jp', 'UTF-8');
 $subject = mb_encode_mimeheader($subject, 'iso-2022-jp');
 $headers[] = "From: $from";
 $headers[] = 'Content-Type: text/plain; charset=iso-2022-jp';
 $headers[] = 'Transfer-Encoding: 7bit';
 mail($to, $subject, $body, join("\n", $headers));
}
sendmail("宛先のメルアド",
   "メールテスト",
   "これはテストです。",
   "差出人のメルアド")
?>

ローカルで SMTP サーバ Radish を起動。しかし、宛先に Gmail を指定して実行したら Radish が落ちた。 (@_@;) 

何度やっても結果は同じだったので、他の SMTP サーバはないかと探すことに。hMailServer , XAMPP に含まれている Mercury は使い方がよくわからず、PHP Portable SMTP Server for WindowsAvira AntiVir が反応したので怖くて使えず。 (+_+)

 

PEAR::Mail

PHPでメールの送信(Gmail使用) - 教えて!goo によると、

もし、自分のプロバイダのSMTPサーバーを使えない理由があり、どうしてもsmtp.gmail.comをSMTPとして使いたいというのなら、すでにご回答のある通り、mail()やmb_send_mail()でなくPEAR::Mailなどを使って SSL+SMTP-AUTHで送るようする必要があります。

( より)

この方法は面倒そうなのでまた今度。。 ^^;

 

MELON

シンプルで軽そうな SMTP サーバはないかと探したら、MELON を発見。起動したら Radish のようにタスクトレイに常駐。

上記のコードを実行したら同様にエラーで送ることができなかったが、今回はエラーメッセージが表示された。

The IP you're using to send mail is not authorized to

これは、「The IP you're using to send email is not authorized... (メールの送信にご使用の IP では、Google のサーバーへのメッセージの直接送信が承認されていません)」 - Gmail ヘルプ によると、

Gmail では迷惑メールを防ぐために、送信元の IP アドレスが送信元のドメインと一致しない場合、メールを拒否します。ご使用のサーバーから Gmail にメールを送信するには、ISP から提供されている SMTP リレーを使用してください。

そこで、上記の「宛先のメルアド」を Yahoo メールにしたら、今度は送信が完了した。

そういえば、Radish の 「設定 > SMTP/POP3サーバ」 のドメイン名に適当に名前を付けていたのを思い出し、自分のネットワークのドメインにしたら、今度は Radish が落ちることはなくなった。しかし、待てど暮らせど受信せず。。

 

参考サイト