web-dev-qa-db-ja.com

暗号化が有効になっていない場合でも、PHPMailerはTLSで送信します

TLSなしでPHPMailerを使用して電子メールを送信しようとしていますが、PHPMailerは有効にしない場合でもTLSで電子メールを送信しようとします。

include_once("PHPMailer-master\PHPMailerAutoload.php");

$To = '[email protected]';
$Subject = 'Topic';
$Message = 'msg test';

$Host = 'site.com.br';
$Username = '[email protected]';
$Password = 'pass';
$Port = "587";

$mail = new PHPMailer();
$body = $Message;
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = $Host; // SMTP server
$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
//$mail->SMTPSecure = 'ssl'; //or tsl -> switched off
$mail->Port = $Port; // set the SMTP port for the service server
$mail->Username = $Username; // account username
$mail->Password = $Password; // account password

$mail->SetFrom($Username);
$mail->Subject = $Subject;
$mail->MsgHTML($Message);
$mail->AddAddress($To);

if(!$mail->Send()) {
    $mensagemRetorno = 'Error: '. print($mail->ErrorInfo);
    echo $mensagemRetorno;
} else {
    $mensagemRetorno = 'E-mail sent!';
    echo $mensagemRetorno;
}

メールを送信した後、次のメッセージが表示されました。

2016-09-01 21:08:55 CLIENT -> SERVER: EHLO www.johnmendes.com.br
2016-09-01 21:08:55 CLIENT -> SERVER: STARTTLS
2016-09-01 21:08:55 SMTP ERROR: STARTTLS command failed: 454 TLS not available due to temporary reason
2016-09-01 21:08:55 SMTP Error: Could not connect to SMTP Host.
2016-09-01 21:08:55 CLIENT -> SERVER: QUIT
2016-09-01 21:08:55 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Erro ao enviar e-mail: 1

サーバーはsslまたはtlsをサポートしていません。

何か案が?

9
John Mendes

これは、PHPMailerのドキュメントで説明されています。 PHPMailerは日和見TLSを実行します-サーバーがTLSを実行できることをアドバタイズすると(これはTLSを実行します)、ユーザーに確認することなく自動的に使用します。これを無効にできます:

$mail->SMTPSecure = false;
$mail->SMTPAutoTLS = false;

エラーメッセージから、これはホスティングプロバイダーの一時的な問題のようです。 $mail->SMTPDebug = 2;を設定すると、詳細情報が表示されます。

旧式の例に基づいてコードを作成したことがわかります。したがって、必ず PHPMailerの最新バージョン を使用し、付属の例に基づいてコードを作成してください。

27
Synchro