如何在没有SSL的情况下通过PHPMAILER发送电子邮件-端口25?

时间:2018-09-28 10:06:23

标签: phpmailer

我想使用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

1 个答案:

答案 0 :(得分:1)

您已经基于旧示例创建了代码,但没有帮助。您看不到是怎么回事,因为您仅将1用于SMTPDebug;将其设置为2

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

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

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