2017-02-01 13 views
2

私はその日がうまくいくことを願っています。Office 365でPhpMailerを使用できない

私は、現在動作していないWebフォームを持っている既存のPHPサイト(私はPHP専門家とは遠く離れていることに注意してください)で少しの作業をしています。このフォームはユーザーの入力を受け取り、電子メールに変換してユーザーのオフィスアカウントに送信します。彼らは電子メールプロバイダとしてOffice 365に切り替えたときに機能しなくなりました。フォームはPhpMailerライブラリを使って送信を処理していますので、Office 365の設定を使用するように変更しましたhere。送信すると、次のエラーが表示されます。

2017-02-01 21:50:17 Connection: opening to smtp.office365.com:2525, 
timeout=10, options=array () 2017-02-01 21:50:28 Connection: Failed to 
connect to server. Error number 2. "Error notice: stream_socket_client() 
[function.stream-socket-client]: unable to connect to smtp.office365.com:587 
(Connection timed out) 2017-02-01 21:50:28 SMTP ERROR: Failed to connect to 
server: Connection timed out (110) 
Message delivery failed...RFI1 

これはセットアップ方法のためにウェブページに直接出力されます。ここに私が入れているPhpMailer設定があります:

$mail = new PHPMailer(true); 
$mail-> IsSMTP(); 
$mail->Host  = "smtp.office365.com"; 
$mail->SMTPAuth = true; 
$mail->Username = 'username'; 
$mail->Password = 'pass'; 
$mail->SMTPSecure = 'ssl'; 
$mail->Port  = 587; 
$mail->SMTPDebug = 2; 

$mail->From  = $from; 
$mail->Mailer  = "smtp"; 
$mail->FromName = 'Generic message'; 

私はここで間違っているかもしれない何かを見てきました。サイトをホストしているISPは何もブロックしていないと言い、MicrosoftはSSLを正しく設定していないと言います。私はこのシステムの専門家ではないので、私はサーバーに直接アクセスすることはできず、サイト自体が奇妙に構築されており、ローカルサーバーで適切に動作させることができません。それでも、SSLの問題によって接続タイムアウトが発生する可能性があると考えるのは苦労します。他に何がこの問題を引き起こす可能性があるのか​​誰にも分かりますか?

編集:エラーメッセージのポートがコード内のポートと一致しませんでした。私は何を読んだかに基づいていくつかのポートを試してみました。そして、それぞれ異なる時間にテキストをつかんでいます。

+2

ポート2525奇数である、それはそれは私の悪かった、あなたはそう – nogad

+0

に設定されたポートを使用していないようです。以前のコードを切り取って貼り付けた後、別のポート番号で試してみて、その実行からエラーを取得しました。サーバからの –

+0

は 'telnet smtp.office365.com 587'を実行します。接続があるかどうかを確認してください。 – nogad

答えて

0

値を構成して動作することを願ってはいけません。 Office365の設定はbog-standardで、Hostの値以外のgmailと同じですので、PHPMailerに付属のthe gmail exampleにコードを設定してください。

ここにある特定の問題については、SMTPSecure = 'ssl'Port = 587で動作しないと思われます。ポート587(明示的なTLS)の場合は、SMTPSecure = 'tls'が必要です。前に述べたよう暗号化層としてtlsを設定する代わりに、sslに加えて

+0

私は入力を感謝し、リンク先の例を使用しています。また、私は両方のプロトコルを試して、まだ運がありません。 –

+0

その場合、あなたのISPがアウトバウンドSMTPをブロックしていると思います。それは非常に一般的です。トラブルシューティングガイドでは、そのことを確認するためのいくつかのテストがあります。 – Synchro

0

は、$mail->Fromは明示的に指定する必要があり、それが$mail->Usernameプロパティに同一である必要があります。ここで

変更例です:

$mail = new PHPMailer(true); 
$mail-> IsSMTP(); 
$mail->Host  = "smtp.office365.com"; 
$mail->SMTPAuth = true; 
$mail->Username = "[email protected]"; 
$mail->Password = '[email protected]'; 
$mail->SMTPSecure = 'tls'; //TLS 
$mail->Port  = 587; 

$mail->From  = $mail->Username; //mandatory and identical to Username property 

$mail->Subject = "Hello message"; 
$mail->Body = "Body goes here..."; 
$mail->addAddress('[email protected]'); 


if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 
+0

あなたの提案をありがとうが、まだ運がありません。私はまだ同じ '接続タイムアウト'エラーを取得しています。 –

関連する問題