TransmitMail というとても便利なメールフォーム(PHP)を昔から利用させてもらっているのですが、いつの間にか利用サイトのお客様から「予約メールが届かないんだけれども?」というお問い合わせをもらいました。ちなみに自動返信メールは問題ありません。
納品時に、予約のデモンストレーションで動作確認も一緒に行っていますし、外部SMTPの設定も TransmitMail で行っているため、メールの不達は起こらないはずですがなぜだろう・・・?と、自分のフリーメールアドレス複数を使ってテストすると、確かに迷惑メールに振り分けられたり、そもそも届かなかったりするケースもあります。
メールのソースを読めど Received が複数あり良くわからないわけですが、試行錯誤を繰り返すうちにお客様に届く方のメールは、送信元(From)の値がお客様のメールアドレスになっておりました。サーバを経由してはいますが、必ず自分で自分にメールを送る形です。
とりあえず、メールを送信しているTransmitMail の該当部分を読みます、TransmitMail.php(v2) 1127行目より。
1 2 3 4 5 6 |
// メール送信元 if (!empty($this->post[$this->config['auto_reply_email']])) { $from_email = $this->post[$this->config['auto_reply_email']]; } else { $from_email = $to_email; } |
上記5行目に、$to_emailがそのまま代入されている部分。確かにここを、外部SMTPのログインIDを利用する設定にしてしまうと、特殊な外部SMTPのIDの場合によろしくないかも?果たしてそういう例があるのかどうかはわかりませんが、それならばオプションに From の設定値があっても良いように思います。
オプション作るか・・・と検討したのですが、今回は諸事情で修正費がありません。結局下記のようにして対応しました。
1 2 3 4 5 6 |
// メール送信元 if (!empty($this->post[$this->config['auto_reply_email']])) { $from_email = $this->post[$this->config['auto_reply_email']]; } else { $from_email = 'example@example.jp'; } |
そういうわけで3年後くらい何かあっても思い出せるようブログ記事を書いてみました。何事も予算次第でございます。
Copyright secured by Digiprove © 2017