web-dev-qa-db-ja.com

Sendmail Wamp Php

私はこれについて解決策を見つけるためにインターネットでこれを検索するために午前中ずっと費やしました。 Windows 8.1にwampサーバーをインストールしましたが、sendmail( http://glob.com.au/sendmail/ )とGmailアカウントでメールを送信しようとしています

ポート番号465を使用するようにsendmailを構成すると、常に次のエラーが表示されます:Socket Error#10060Connection timed out

ポート番号587を使用しようとすると、エラーログに次の行が表示されます:Connection Closed Gracefully。ただし、メールは送信されません。

これは私のsendmail.iniファイルです

[sendmail]
smtp_server=smtp.gmail.com
;I tried both: 587, 465
smtp_port=587
; I tried: "blank, auto ssl, tls, none"
smtp_ssl=
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=mypass
hostname=localhost

そして、これはphp.iniファイルです

[mail function]
smtp_port = 465
sendmail_path="C:\wamp\sendmail\sendmail.exe -t"
mail.add_x_header = On

ssl_moduleはApacheでアクティブであり、phpはphp_open_sslおよびphp_socket拡張を使用します。

また、私は成功せずにstunnelを使用しようとしました

編集27/01/2014

Sendmail.iniでsmtp_port = 465とsmtp_ssl = sslを設定します。また、sendmail.exeをWindows XP SP3プログラムとして実行する必要があることを設定しました。その後、Windowsコンソールでsendmail.exeを実行すると、電子メールが正しく送信されます。 wampがメールを送信しようとすると、sendmailのエラーログでこのエラーが発生します。ソケットエラー#10060接続がタイムアウトしました。

これは、sendmailのテストに使用しているコードです。

<?php
$email = "[email protected]";
$to = "[email protected]";
$subject = "Hi!";
$body = "Hi,How are you?";
$headers = 'From: ' .$email . "\r\n".'Reply-To: ' . $email. "\r\n".'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $body, $headers)) echo("<p>Email successfully sent</p>");
else echo("<p>Email delivery failed</p>");
?>
22
Rumpelstinsk

最終的に私は答えを見つけました。

問題は、sendmailを管理者として実行する必要があることです。これは私の状況で誰でも助ける解決策です。

  1. Sendmail.exeを右クリックします
  2. 物性
  3. 互換性
  4. すべてのユーザーの構成を変更する
  5. Windowsとして実行XP SP 3
  6. 管理者として実行

そして保存:D

このナンセンスで失われた2日間:(

67
Rumpelstinsk

受け入れられた答えの拡張として:

PHPでメール送信機能を実行している場合、「メール送信」アプリを管理者として実行するように求めるダイアログが表示される場合があります。 [はい]をクリックすると、コマンドプロンプトダイアログが表示され、何も起こりません。コマンドプロンプトを閉じるまでページがハングします。メール機能は「True」を返しますが、実際にはメッセージは送信されませんでした。

この問題を解決するには、受け入れられた回答と同じ手順を実行し、次のいずれかの方法で管理者としてサーバー(またはIDE)を実行します。

1)プログラム(サーバー、IDE、コマンドプロンプトなど)を右クリックし、[管理者として実行]をクリックします

2)OR右クリックプログラム>プロパティ>互換性>管理者として実行にチェックマークを付ける

たとえば、ビルドサーバーでPHPを使用している場合、管理者としてプロンプトを実行し、通常どおりサーバーを起動します。

C:\wamp\bin\php\php5.5.12\php.exe -S localhost:80 -t C:\Users\path\to\rootFolder

もちろん、ニーズに合わせてファイルパスを変更します。

これが誰かを助けることを願っています!!!これで歳をとった!

8
Yahya Uddin

問題は、sendmailを管理者として実行する必要があることです。これは私の状況で誰でも助ける解決策です。

  1. Sendmail.exeを右クリックします
  2. 物性
  3. 互換性
  4. すべてのユーザーの構成を変更する
  5. Windowsとして実行XP SP 3
  6. 管理者として実行
  7. gmailを使用している場合は、新しいパスワード「アプリケーション固有のパスワード」を作成する必要があります
6
juan.conde

Compatibility Troubleshooter

Windows 10では、互換性トラブルシューティングツールを実行することが唯一の方法であることがわかりました。

  1. Sendmail.exeを右クリックします
  2. 「プロパティ」をクリックします
  3. [互換性]タブを選択します。
  4. [互換性トラブルシューティングツールの実行]をクリックします。
  5. Windowsに自動的に修正させます。
1
Matt