携帯電話宛にPHPのプログラムからメール送信を行う場合に、
Envelope From (※1)が存在するドメイン名のメールアドレスになっていないと
携帯キャリアのメールサーバで転送拒否されてしまうことがあります。
私が試した限り、Docomoでは転送されsoftbankとAUでは転送が拒否されてしまいました。
また、携帯だけでなくISPや企業でも拒否されることがあります。
PHPでメールを送る時に使用するmail関数では、mail関数の第五引数で
sendmailの-fオプションを使用しenvelope senderの値を指定することで
対応できます。
サンプル
mail("hoge@hoge.com", "subject", "test message", "From: hogefrom@hoge.com", "-fhogefrom@hoge.com");
その他の方法として、PearのMailを使用することも対応策として有効です。
PearのMailではfromのアドレスを自動でenvelope-fromに設定してくれるので
mail関数を使用する時のように、-fオプションを使用する煩わしさがありません。
※1
envelope fromとは、宛先が不明だった場合にメールサーバがエラーメールを
返す宛先になります。何も設定せずに送信すると、apache@localhost.localdomainや
apache@サーバのホスト名になってしまい、外部のメールサーバからはアクセス不可な
ドメイン名になります。
コメント (1)
私も同じ現象が起こりました。
mb_send_mail()の関数を使って3キャリアにメール送信しようと思っていたのですが、Docomoは送信できたのですが、AU,Softbankに送信できません。
上記に書かれているようにmail関数にして第5引数を-fにしたのですが送信できません。
もし何かお分かりになるましたら、ご連絡頂けると幸いです。
宜しくお願いします。
投稿者: 田中 あやな | 2009年12月18日 15:35