【问题标题】:How can I send an email via PHPMAILER without SSL - port 25?如何在没有 SSL 的情况下通过 PHPMAILER 发送电子邮件 - 端口 25?
【发布时间】:2019-03-04 07:30:36
【问题描述】:

我想使用 PHPMailer 发送不带 SSL 的电子邮件。我已启用调试模式,以便查看日志中的详细信息。

    $mail = new PHPMailer\PHPMailer\PHPMailer();
    $mail->IsSMTP(true); // enable SMTP
    $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
    $mail->SMTPAuth = true; // authentication enabled
    $mail->SMTPSecure = false; // secure transfer enabled REQUIRED for Gmail
    $mail->Host = "mail.company.co.uk";
    $mail->Port = 25; // or 587
    $mail->IsHTML(true);
    $mail->Username = "email@company.co.uk";
    $mail->Password = "password_of_username";
    $mail->SetFrom($email,$name);
    $mail->Subject = $subject;
    $mail->Body = $message;
    $mail->AddAddress($to);

这是一个例外:

2018-09-28 10:04:27 CLIENT -&gt; SERVER: EHLO localhost<br>
2018-09-28 10:04:27 CLIENT -&gt; SERVER: STARTTLS<br>
SMTP Error: Could not connect to SMTP host.<br>
2018-09-28 10:04:28 CLIENT -&gt; SERVER: QUIT<br>
2018-09-28 10:04:28 <br>
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting<br>
Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

【问题讨论】:

    标签: php email phpmailer starttls


    【解决方案1】:

    您的代码基于一个旧示例,这无济于事。你看不到发生了什么,因为你只使用了1 为SMTPDebug;将其设置为2。

    您的邮件服务器在端口 25 上宣传它支持 STARTTLS,因此 PHPMailer 会自动使用它。您可以通过执行以下操作完全禁用加密:

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

    但是,我建议不要这样做;改为修复您的 TLS 配置。您可能需要更新本地 CA 证书包 - 请参阅故障排除指南了解更多详细信息。

    【讨论】:

    • $mail->SMTPAutoTLS = false;
    • 我在许多网页上阅读了您的 cmets。感谢您的帮助
    猜你喜欢
    • 2018-03-05
    • 2015-12-12
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多