【問題解決】メールフォームの送信テストが失敗する件 その2

HTML
スポンサーリンク

こんにちは朱夏です。

前回の続きからやっていきます。
前回新たに表示された以下のエラーの原因を突き止めていきます。

The recipient address </bb/bbr /@> is not a valid RFC-5321 address. z30sm8534697pff.131 – gsmtp<EOL>

翻訳すると以下になります。

受信者のアドレス</ bb / bbr / @>は有効なRFC-5321アドレスではありません。 z30sm8534697pff.131-gsmtp <EOL>

 

RFC-5321とは、簡単に言うとメールアドレスの@より前の部分について、@の直前に”.”(ドット)を入れてはいけないなど、メールアドレスの命名規則を定義しているものです。

アドレスとして認識されている</bb/bbr /@>の部分が、実際どこから持って来ている情報なのか調べていこうと思います。

ググっても情報が無く完全に手探り状態なので、仮説を立てて検証したいと思います。

仮説1:フォームに入力したメールアドレスの文字化け

フォームに入力したメールアドレスが文字化けしているのであれば、別のメールアドレスで試した場合、文字化けしたとしてもメールアドレスが別のものになるはずです。

というわけで、実際に使用しているメールアドレスやダミーのアドレスも含め、5パターンほどテストしてみました。

結果1:</bb/bbr /@>の表示に変化なし

変化がなかったということは、参照されている場所がフォームのメールアドレスではないということです。

 

仮説2:フォームのメールアドレスが受け渡されていない

フォームのアドレスを受け取れていないとすると、それはなぜでしょうか?
可能性は3つほどあります。

    1. コードの書き間違え
    2. 優先度の高い参照先がある
    3. そもそもメールフォームからのアドレスの事ではない

一つずつつぶしていきましょう。

1.コードの書き間違え

再度見直しましたが、コードの書き間違えはなさそうでした。

$_POST[‘mailaddress’]の部分がメールアドレス部分なのですが、確認画面に表示させるときと同じものなので、ちゃんと指定はできている気がするのですが・・・
一先ず問題なしとして次に行きます。

 

2.優先度の高い参照先がある

index.php内に記載された情報以外では、前回書き換えた.iniファイルの情報が怪しい気がします。
まず、php.iniについては、前回の参考サイトを見返して、以下をコメントアウトしました。

更に、sendmail.iniも不要な部分をコメントアウトしてみました。

これでテストしてみましたが、同じエラーが表示されました。

 

3.そもそもメールフォームからのアドレスの事ではない

フォームに入力しているメールアドレス以外でメールアドレスを設定している部分を別のアドレスに変更して試していきます。

以下のコードに直接送信先メールアドレスに変更した場合、メールが送信されました。

 

 

結果2:$_POST[‘mailaddress’]を直接のメールアドレスにしたら送信できた

以上の結果から、「送信時のTo(受信者のメールアドレス)の指定方法に問題がある」というのが今回の結論になります。

 

まとめ

結局、コードの書き間違いだったということなのでしょうか?
それとも、phpのバージョンアップなどで今まで有効だった指定方法では受け取れなくなってしまったのでしょうか?

どちらにせよ、修正箇所が特定は出来ました。

次回、フォームに入力したメールアドレスを、正常に受信者のアドレスに指定するにはどうしたらいいかを見ていきたいと思います。

 

今回は以上です。

 

タイトルとURLをコピーしました