こんにちは朱夏です。
前回の続きからやっていきます。
前回新たに表示された以下のエラーの原因を突き止めていきます。
翻訳すると以下になります。
RFC-5321とは、簡単に言うとメールアドレスの@より前の部分について、@の直前に”.”(ドット)を入れてはいけないなど、メールアドレスの命名規則を定義しているものです。
アドレスとして認識されている</bb/bbr /@>の部分が、実際どこから持って来ている情報なのか調べていこうと思います。
ググっても情報が無く完全に手探り状態なので、仮説を立てて検証したいと思います。
フォームに入力したメールアドレスが文字化けしているのであれば、別のメールアドレスで試した場合、文字化けしたとしてもメールアドレスが別のものになるはずです。
というわけで、実際に使用しているメールアドレスやダミーのアドレスも含め、5パターンほどテストしてみました。
変化がなかったということは、参照されている場所がフォームのメールアドレスではないということです。
フォームのアドレスを受け取れていないとすると、それはなぜでしょうか?
可能性は3つほどあります。
-
- コードの書き間違え
- 優先度の高い参照先がある
- そもそもメールフォームからのアドレスの事ではない
一つずつつぶしていきましょう。
1.コードの書き間違え
再度見直しましたが、コードの書き間違えはなさそうでした。
// 送信 if(mb_send_mail( $_POST['mailaddress'], $auto_reply_subject, $auto_reply_text, $auto_header)) { echo "送信成功"; }else{ echo "送信失敗"; };
$_POST[‘mailaddress’]の部分がメールアドレス部分なのですが、確認画面に表示させるときと同じものなので、ちゃんと指定はできている気がするのですが・・・
一先ず問題なしとして次に行きます。
2.優先度の高い参照先がある
index.php内に記載された情報以外では、前回書き換えた.iniファイルの情報が怪しい気がします。
まず、php.iniについては、前回の参考サイトを見返して、以下をコメントアウトしました。
; SMTP=localhost ; smtp_port=25
更に、sendmail.iniも不要な部分をコメントアウトしてみました。
; pop3_server= ; pop3_username= ; pop3_password= ; force_sender= ; force_recipient= ; hostname=
これでテストしてみましたが、同じエラーが表示されました。
3.そもそもメールフォームからのアドレスの事ではない
フォームに入力しているメールアドレス以外でメールアドレスを設定している部分を別のアドレスに変更して試していきます。
以下のコードに直接送信先メールアドレスに変更した場合、メールが送信されました。
mb_send_mail( $_POST['mailaddress'], $auto_reply_subject, $auto_reply_text, $auto_header) //変更前 mb_send_mail( "ここにメールアドレス", $auto_reply_subject, $auto_reply_text, $auto_header) //変更後
以上の結果から、「送信時のTo(受信者のメールアドレス)の指定方法に問題がある」というのが今回の結論になります。
結局、コードの書き間違いだったということなのでしょうか?
それとも、phpのバージョンアップなどで今まで有効だった指定方法では受け取れなくなってしまったのでしょうか?
どちらにせよ、修正箇所が特定は出来ました。
次回、フォームに入力したメールアドレスを、正常に受信者のアドレスに指定するにはどうしたらいいかを見ていきたいと思います。
今回は以上です。