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

HTML
スポンサーリンク

こんにちは朱夏です。

今回は、フォームからのメール送信テストが出来る環境を作っていきます。
ここまでMAMPを使って来たので、MAMPで何とかできないか試行錯誤しましたが、私のレベルでは解決できませんでした。
そこで、XAMPPを使用する事にしました。

 

XAMPPのセットアップ

先ずは以下のサイトを参考にXAMPPをインストールします。

 

テスト環境準備

次に、送信テストに使用するフォームを設置します。
前回作った問い合わせフォームを簡略化して使います。
作成したPHPファイルを以下に配置します。

配置先
<インストール先>\xampp\htdocs
例)C:\xampp\htdocs ※デフォルト設定の場合、こちらになります。

 

画面表示の確認は以下のURLで確認できます。

URL:http://localhost/<表示したいファイルのパス>

※htdocsディレクトリ直下に配置したindexファイルを表示したい場合は、
~localhostまででOKです。

 

これで、問い合わせフォーム側の準備は出来ました。
次に行きます。

.iniファイルの編集

続きはこちらのサイトを参考に作業しました。

編集が必要なファイルは以下の2つの様です。
念のため、それぞれコピーからバックアップを取っておきます。
※インストール先は<c:\>として説明していきます。

C:\xampp\php\php.ini > php_bk.ini
C:\xampp\sendmail\sendmail.ini > sendmail_bk.ini

 

php.iniの編集

参考サイトに記載のあった行がそもそも存在していない様です。
私の環境では[mail function]はこのような内容になっていました。

 

存在していないものはどうしようもないので、以下をsmtp_port=25と書かれた行の下に追記しました。

これでphp.iniの編集は終了です。

 

sendmail.iniの編集

こちらも編集していきます。

前提条件:今回はgmailを使用して検証しています。

 

編集後の状態がこちらになります。
gmailのIDとパスワードは伏せています。

 

gmailの場合は送信側(smtp)の設定だけで問題ない様です。
使用するメールサービスによって送信側(pop)の設定も必要になるみたいですね。

ここで、XAMPPの再起動を実施します。

 

送信テスト

送信テストを実施してみたところ、うまく送られていない様子。
送信成功か失敗かをページに表示する様にコードを書き換えました。
また、原因調査のため、エラーログを確認することにしました。

  • C:\xampp\sendmail\error.log

エラー内容は以下のようなものでした。

Message is missing sender’s address

送信者アドレスが正常に取得出来ていない様です。
これに関しては回避方法が2つありました。

  1. sendmail.iniの”force_sender”に送信者アドレスを指定する
  2. index.phpの$header情報を修正する

今後の事を考えると2の方で対応可能にしておかないと不便な気がするので、どの様に書けば認識してくれるのかを調べました。

検証1

  • Fromのみ指定した場合 > 成功

この場合はエラーメッセージを回避する事が出来ました。
しかし、新たなエラーとぶつかることになるのですが・・・
一先ずは今回のエラーを回避する方法を探していきます。

検証2

  • \r\nを使う(¥はバックスラッシュ) > 失敗

この方法では、From以外を指定した場合はエラーが出ました。
因みに、初期の状態では、前回のままだったので\nが付いていました。

検証3

  • arrayで指定してみる > 成功

この検証で成功しました。
MIME-Version、From、Reply-Toの3つともヘッダー要素として取り込めた様です。
CRLF(\r\nを使う方法)だと、使用するメールサービスなどによって\nのみにする必要があるなど、安定して使えないので、arrayで指定するのが良い様ですね。

 

1つ問題が解決しましたが、次のエラーが出ています。

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

受信者のアドレスがRFC-5321に違反しているといった内容のメッセージの様です。
また懐かしいエラーですね・・・

しかし、受信者のアドレスとされている</bb/bbr /@>というもの、これが何を指しているのか、文字化けなのか、メールアドレスの取得に失敗しているのかといったところが謎です。

まだ問題解決していませんが、今回はここまでにします。
最後に現在のコードを置いておきます。

 

今回は以上です。

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