【问题标题】:using phpmailer with plesk smtp将 phpmailer 与 plesk smtp 一起使用
【发布时间】:2018-09-24 14:00:53
【问题描述】:

我正在尝试使用 Plesk SMTP 在我的 VPS 上设置 PHP 邮件程序。

PHP 代码

require("path_to_phpmailer");
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);                            
try {
    //Server settings
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->SMTPDebug = 2; 
    $mail->CharSet  = 'UTF-8';
    $mail->Host = 'localhost';
    $mail->Port = 25;
    $mail->SMTPSecure = 'tls'; 
    $mail->SMTPOptions = array (
    'ssl' => array(
        'verify_peer'  => true,
        'verify_depth' => 3,
        'allow_self_signed' => true,
        'peer_name' => 'Plesk',
        )
    );
    $mail->SMTPAuth = true;
    $mail->Username = 'support@mywebsite.com';
    $mail->Password = 'somepassword';
    $mail->setFrom('support@mywebsite.com', 'Name Surname');
    $mail->addAddress('someadress@web.de', 'Name Surname');
    $mail->Subject = 'Email subject';
    $mail->msgHTML('Email content with <strong>html</strong>');
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }

        echo 'Message has been sent';
    } catch (Exception $e) {
        echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
    }

support@mywebsite.com 是我在 ples 仪表板中创建的电子邮件,而 somepassword 是它的密码。但是运行脚本会得到以下输出:

2018-04-14 09:27:10 SERVER -> CLIENT: 220 myserver.net ESMTP 
Postfix (Ubuntu)
2018-04-14 09:27:10 CLIENT -> SERVER: EHLO mywebsite.com
2018-04-14 09:27:10 SERVER -> CLIENT: 250-myserver.net250- 
PIPELINING250-SIZE 10240000250-ETRN250-STARTTLS250-AUTH DIGEST-MD5 CRAM-MD5 
PLAIN LOGIN250-XFORWARD NAME ADDR PROTO HELO SOURCE PORT IDENT250- 
ENHANCEDSTATUSCODES250-8BITMIME250 DSN
2018-04-14 09:27:10 CLIENT -> SERVER: STARTTLS
2018-04-14 09:27:10 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
SMTP Error: Could not connect to SMTP host.
2018-04-14 09:27:10 CLIENT -> SERVER: QUIT
2018-04-14 09:27:10 SERVER -> CLIENT: 
2018-04-14 09:27:10 SMTP ERROR: QUIT command failed: 
SMTP connect() failed. 
https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Mailer Error: SMTP connect() failed. 
https://github.com/PHPMailer/PHPMailer/wiki/TroubleshootingMessage has been 
sent

我理解错了吗?

提前谢谢你!

【问题讨论】:

  • 您正在使用 TLS 到 localhost - 并且邮件服务器发布的证书永远不会匹配该名称,这就是您收到该错误的原因。由于它是本地主机,因此无论如何加密都没有意义,但如果您因为 autotls 而自动获取它,您可以禁用它或使用 确实 出现在邮件服务器证书上的名称,这大概会映射到同一位置。
  • 谢谢!我找到了使用邮件 api 的解决方法。不使用加密,我可以毫无错误地调用 phpmailer 函数,但由于某种原因,邮件仍然没有发送。

标签: php wordpress email phpmailer plesk


【解决方案1】:

检查是否是ssl的问题,然后重试

$mail->SMTPOptions = array(
   'ssl' => array(
   'verify_peer' => false,
   'verify_peer_name' => false,
   'allow_self_signed' => true
  )
);

如果还是有错误

$mail->SMTPDebug = 3;

https://github.com/PHPMailer/PHPMailer/wiki/SMTP-Debugging

【讨论】:

  • 这不是解决方案,它隐藏了错误而不是解决问题 - 我们已经知道这是一个 TLS 问题,因为它与故障排除指南中描述的确切情况之一相匹配。
  • 尝试添加 cafile。应该帮助PHPMailer ssl_options.phps
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 2021-10-17
  • 1970-01-01
  • 2019-10-29
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多