Phpmailer 未存储到已发送文件夹

问题描述 投票:0回答:1

后台上下文:使用 php8.1、Ubuntu 22.04 的新邮件服务器。旧服务器 php7.4,Debian Stretch 均使用 Phpmailer 5.5。

以前的服务器会发送带有附件的电子邮件,并将包含附件的副本放在已发送文件夹中。新服务器可以正确发送,但不会保存副本(到发送文件夹)。

错误信息是: [服务器名称] 的 TLS/SSL 失败:SSL 协商失败 (errflg=2),在线 0
未知

我在 mail.log 中找不到此错误的任何详细信息

这是我之前成功使用的代码,扩展类(但使用临时调试行来验证传递给 imap_append 的数据):

$imapStream = imap_open("{" . $this->Host . "}" . $path , $this->Username, $this->Password);

        echo "\nHost: ".$this->Host."\n";
        echo "\npath: ".$path."\n";
        echo "\nUsername: ".$this->Username."\n";
        echo "\nPassword: ".$this->Password."\n";
        echo "\nimapStream: ".$imapStream."\n";

        imap_append($imapStream, "{" . $this->Host . "}" . $path, $message);
        imap_close($imapStream);

Thunderbird 和 Dovecot 都工作得很好,实际上只是 PHPMailer 有问题。 PHP IMAP 扩展已安装。

我尝试将 Phpmailer 升级到较新的版本 -6.9.1,但这带来了许多其他问题。

这显然是一个 IMAP 身份验证问题,但我不知道从哪里获取信息来解决它。

任何帮助将不胜感激。

phpmailer dovecot
1个回答
0
投票

PHPMailer 确实不参与其中 - 它只是受其运行环境的影响,需要 IMAP 和 openssl PHP 扩展才能工作。您显示的错误表明 PHP 无法建立或验证安全的 IMAP 连接。这可能是由于您的邮件服务器配置错误(例如,如果它提供无效或不受信任的证书,或者您连接的端口不支持加密 - 检查您的端口号),或 PHP 本身配置错误(例如,您的 CA捆绑包已过时,或者您的 openssl 扩展已过时)。

我建议在服务器的命令行上使用 openssl 检查 IMAP 连接,例如:

openssl s_client -connect map.example.com:993 -crlf
© www.soinside.com 2019 - 2024. All rights reserved.