• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP の mail( ) 関数について)

PHP mail()関数のエラー解決法

このQ&Aのポイント
  • PHPのmail()関数を使ったスクリプトでエラーが発生。
  • エラーメッセージはSMTP接続に関するもので、設定が必要。
  • php.iniのSMTP設定を見直すことで解決を図ることが可能。

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6871/9771)
回答No.3

>自分はまだPHPの学習者で、自身のWebサイトを持っているわけではなく、 >単にXamppの上で練習スクリプトを作っているだけですので、 >プロバイダーなどとの契約はありません。 やはりそんな感じでしたか。 メール送信にはメールサーバが必要です。 で、そのメールサーバとして利用できる一つが、「あなたがインターネット接続に契約しているプロバイダ」です。 わざわざレンタルサーバを借りる必要はありません。 >Xampp環境下でのSMTPサーバのセットアップのようなことは可能なのでしょうか? 出来る出来ないで言ったら出来る話ではありますが、かなり面倒です。 言語学習の前に、サーバ構築の知識と実践が必要になり、言語学習に入れません。 ですから自分でメールサーバを立てるのはお勧めしません。 「簡単なメール送信プログラム」を動かすようにするために、100倍以上の苦労が必要となるでしょう。 まあ、それをやり通すのも良い勉強ではありますが。 PHPを学びたいならば、そこは本筋ではありません。 ---- で、XAMMP環境というのなら、回答No.1に引用したページを参考にしてもらえれば…というはずだったのですが、URLのコピペをミスりました。すみません。 正しいURLはこちらになります。 >XAMMP環境でPHPからメール送信しても届かない問題の解決策 | PisukeCode >https://pisuke-code.com/xammp-php-how-to-send-email/ こちらの、「解決策2.メール送信ライブラリ(PHPMailer)を使う」がお勧めです。 メールサーバには、契約しているインターネットプロバイダの、メール送信サーバー名を指定してください。 もし、マンションインターネット等を利用中で、メール送信サーバが無いならば、無料のYahoo!mail か Gmail(Google)のアカウントを取得すると、メールアドレスとメールサーバが使えるようになります。 Gmailのメールサーバを使うためには、「アプリパスワード」を発行しないと行けなかったりして、こちらも少し面倒なんですけどね。 ↓ PHPMailer + Gmailの例 >【PHPMailer】GmailのSMTP経由でメールを送信する >https://into-the-program.com/phpmailer-gmail/

papashiroSooke
質問者

お礼

詳しい説明をいただき、有難うございます。 今の自分のPHPレベルでは、SMTPサーバーのような複雑なことは一旦避けておいた方がよいと思いました。たまたま今使っているPHPの教本に mail() 関数のサンプルがあったので、本当にそれでメールを送れるのかと思い試しただけのことでした。他のPHPの組み込み関数を試 すのと同じ感覚でやってみたのですが、自分にとってはかなり敷居の高いものだったことがわかりました。 でもいつかは必ず挑戦してマスターしたいと思っています。少なくとも、ご提示いただいた参考のサイトなどから基本的な情報を読んで、大まかなことだけでも理解したいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#263248
noname#263248
回答No.2

このPHPを動かしているマシン(localhost)ではSMTPサーバーが稼働していない、もしくはアクセスできないというエラーです そうなるとSMTPサーバーがどうなっているの?ということになります どうなってます? 設定してあるのか?#1さんの回答にあるように、プロバイダのものを使うのか。 多分この回答の意味が分からないと思います そうなりますとメールサーバーの勉強が必要になってきます メールを送るにはSMTPサーバーというものが必要です 有名なSMTPサーバーはlinuxのpostfixというプログラムです Windowsでもできます なので「試験的なSMTPサーバーを建てたい」という質問をされるといいと思います OSと利用目的を記載して質問してください PHP抜きでメールのやり取りができますと、PHPから送る準備が整ったということです

papashiroSooke
質問者

お礼

ご回答有難うございます。 メールサーバーについての勉強が必要という事ですね。 これは自分にとってはまだ未知の内容なので、これから勉強していこうと思います。

すると、全ての回答が全文表示されます。
  • asciiz
  • ベストアンサー率70% (6871/9771)
回答No.1

現代では、迷惑メール・迷惑メール業者対策のため、プログラムからメールを送ることは非常に面倒になっています。 そのことをご承知おきください。 エラーには「SMTP送信ポート(25番)でアクセスしようとしたが、できなかった」と言われています。 その localhost でSMTPサーバは動いているのですか? localhost が自分のパソコンであるならば、きちんと送信できるメールサーバをセットアップしてからそのスクリプトを動かさなければなりません。 localhost がレンタルサーバであるならば、そのサーバでSMTPサーバが動いているのかどうか確認する必要があります。 まあ、メールサーバとして localhost を指定するから大変なのであって、現在あなたが契約しているプロバイダのメールサーバを使うのが良いでしょう。 >SMTP=localhost こちらの行を、プロバイダから指示のある >SMTP=smtp.provider.co.jp みたいなサーバ名にすれば、その他はそのままで動いてくれるかもしれません。 ただ、生のSMTPポート25番によるメール送信は、昨今の迷惑メール事情によりブロックされていることがあります。 その場合、 >smtp_port=587 とすることにより、送信できるかもしれません。 ただしさらに、SMTPポート587番を使用する場合には、TLSによる暗号化通信を要求される場合があります。 そうなると、単純な mail() 関数だけでは送れません。 ---- こちらのように、メール送信を実行する sendmail.exe を導入し、そちらをセットアップしてから、sendmail.exe を呼び出してメールを送るという手段もあります。 (まあ *.exe はwindowsの話ですが) >XAMMP環境でPHPからメール送信しても届かない問題の解決策 | PisukeCode - Web開発まとめ >https://www.glob.com.au/sendmail/

papashiroSooke
質問者

お礼

ご回答ありがとうございました。 自分はまだPHPの学習者で、自身のWebサイトを持っているわけではなく、単にXamppの上で練習スクリプトを作っているだけですので、プロバイダーなどとの契約はありません。 また php.ini でsmtp_port=587 というのも試してみましたが結果は同じでした。 Xampp環境下でのSMTPサーバのセットアップのようなことは可能なのでしょうか? それが可能であるなら、教えていただきたいのですが、無ければ通常の <form> の <textarea> を使ってユーザーからのコメントを受け取るようにスクリプトを変えてみますが。 何かヒントがありましたら、教えてください。お願いします。

すると、全ての回答が全文表示されます。

関連するQ&A