Windows上のPHP mail():エラーなし、メールは送信されません
-
05-07-2019 - |
質問
現在、ElggベースのWebサイトをデバッグしようとしています(開発していません)。ローカル開発マシン(WinXP)から直接メールを送信したいと思います。 Apache 2.2.11およびPHP 5.3.0でWAMPを実行しています
いくつかの検索の後、私が遭遇した最も簡単な解決策は、偽のsendmail を使用してSMTP経由でGMail / Googleアプリアカウントに転送し、送信させます。問題は、エラーがまったく表示されないが、メールが送信されないことです。
これが私がしたことです:
- sendmail.exeとsendmail.iniをWAMPのサブフォルダーにコピーしました
- sendmail.iniを使用して構成しました(構成設定は問題ありません)
- sendmail.exeへのパスを追加するためにphp.iniを編集しました
sendmail_path =" C:\ Program Files \ wamp \ bin \ sendmail \ sendmail.exe -t"
- php.iniのWindows SMTP設定をコメントアウトしました
<コード>; SMTP = localhost
<コード>; smtp_port = 25
<コード>; sendmail_from = xxx@domain.com
<コード>; mail.force_extra_parameters =
mail.logファイルには以下が表示されます。
mail() on [C:\Program Files\wamp\www\mail.php:9]: To: xxx --
Headers: From: xxx Reply-To: xxx X-Mailer: PHP/5.3.0
私の推測では、問題はデフォルトのWindowsオプション(sendmailユーティリティではなくサーバーを指定する)が上書きされないことです。 phpinfo()
では、まだ SMTP-&gt;が表示されます。 localhost
および smtp_port-&gt; 25
オプション、私はそれらをコメントしましたが。
誰かがこれを機能させることができたなら、私はいくつかの助けを本当に感謝します。私の意見では、偽のsendmailを使用する方が、マシンにメールサーバーをインストールするよりもずっと簡単です。
ありがとう!
PS PHPMailerなどを提案しないでください。mail()関数を使用する必要があるためです。これがElggの仕組みです。
解決
やがて機能するようになりました。問題は、 PHPにスペースがある.iniファイルの解析にバグがあったことです。パス(sendmailの場合)。バージョン5.3.0で修正されましたが、マニュアルにはこれに関する情報がありませんでした。
つまり、はい、WindowsでPHPでsendmailを使用することは可能です:D。
お時間をいただきありがとうございます!
他のヒント
ローカルマシンでSMTPサービスが実行されており、SMTPポート(25)が開いていることを確認してください。
サービス(Run-&gt; services.msc)を確認し、メール転送の送信を探します
サービスリストにSMTPが見つからない場合は、インストールする必要があります。 たす、 実行-&gt; appwiz.cpl-&gt; Add Windowsコンポーネントの削除-&gt; IIS-&gt;詳細-&gt; SMTP
これが役立つかどうかはわかりませんが、これらのシナリオで使用していたことは、マシンをセットアップし、見通しを立てて、5分ごとにポップから電子メールを取得するように設定することでした。マシンがポップに対して認証され、私が設定した場合:
SMTP = localhost
smtp_port = 25
php.iniでは、メール機能は正常に機能しました。したがって、あなたの場合、ポップで動作するように見通しを設定し、php.iniでそのsmtpを使用し、うまくいけばうまくいくはずです。ただし、GMailをテストしていません。
PS mail()関数を使用する必要があるため、PHPMailerなどを提案しないでください。これがElggの仕組みです。
...この動作を変更するプラグインを使用している場合を除き:
http://community.elgg.org/pg/plugins/costelloc/ read / 16498 / phpmailer