【问题标题】:PHPMailer sends with TLS even when encryption is not enabled即使未启用加密,PHPMailer 也会使用 TLS 发送
【发布时间】:2017-01-09 21:26:32
【问题描述】:

我正在尝试使用不带 TLS 的 PHPMailer 发送电子邮件,但 PHPMailer 仍然尝试使用 TLS 发送电子邮件,即使我没有启用它:

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

$To = 'some@site.com';
$Subject = 'Topic';
$Message = 'msg test';

$Host = 'site.com.br';
$Username = 'contact@site.com.br';
$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。

有什么想法吗?

【问题讨论】:

    标签: php email phpmailer


    【解决方案1】:

    这在 PHPMailer 文档中有介绍。 PHPMailer 执行机会性 TLS - 如果服务器宣传它可以执行 TLS(您的),它会自动使用它而无需您询问。您可以禁用此功能:

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

    从错误消息来看,这似乎是您的托管服务提供商的临时问题。如果您设置$mail->SMTPDebug = 2;,您会看到更多信息。

    我可以看到您的代码基于过时的示例,因此请确保您拥有 the latest version of PHPMailer 并将您的代码基于随附的示例。

    【讨论】:

      【解决方案2】:

      我在使用 one.com 时遇到了同样的问题:SMTP 465 不起作用。

      我可以在 phpmailer 中使用端口 25 和这个配置:

      $mail->Host = 'send.one.com';
      $mail->SMTPAuth = true;
      $mail->Username = "***";
      $mail->Password = "******";
      $mail->From = "***";
      $mail->SMTPAutoTLS = false;
      $mail->SMTPSecure = 'none';
      $mail->Port = 25;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-30
        • 1970-01-01
        • 2020-03-06
        • 1970-01-01
        • 2020-12-31
        • 1970-01-01
        • 2016-02-27
        相关资源
        最近更新 更多