【发布时间】:2015-10-13 22:49:40
【问题描述】:
我在使用 PHPMailer (v 5.2.9) 发送 DKIM 签名电子邮件时遇到问题。
我使用的 SMTP 服务器 (realsender.com) 应该对我发送的每封电子邮件进行签名。
当我从 Delphi 程序发送电子邮件时它可以工作,但它不适用于 PHP。
我已经检查了 PHPMailer 和 Delphi 发送的电子邮件,https://www.mail-tester.com
Delphi 的结果是 10/10,PHP 的结果是 6.8/10。
这是使用 PHPMailer 发送电子邮件的文件的一部分:
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';
$mail->setLanguage('it');
$mail->isSMTP();
$mail->Host = SMTP_HOST;
$mail->SMTPAuth = SMTP_AUTH;
$mail->Username = SMTP_USERNAME;
$mail->Password = SMTP_PASSWORD;
if (defined('SMTP_PORT')) {
$mail->Port = SMTP_PORT;
}
if (defined('SMTP_SECURE')) {
$mail->SMTPSecure = SMTP_SECURE;
}
if(defined('DKIM_DOMAIN')){
$mail->DKIM_domain=DKIM_DOMAIN;
$mail->DKIM_selector=DKIM_SELECTOR;
$mail->DKIM_private=DKIM_PRIVATE;
}
[...]//setting from, to, subject and body
$mail->send();
注意:$mail->send(); 总是返回 true。
首先我尝试在不设置 DKIM_ 属性的情况下发送电子邮件,然后我尝试与他们一起发送。
在这两种情况下,结果都是无效的 DKIM 标志和 6.8 分。
我已向 SMTP 支持部门询问他们是否对此有所了解,但他们说这可能是 PHPMailer 本身的问题。
我可以做些什么来创建一个有效的 DKIM?
提前致谢。
更新:
我发现问题出在电子邮件的正文中。
我也停止使用 DKIM_ vars,因为我的 SMTP 服务器会自动签署所有电子邮件。
发送空邮件,不带标签或带标签但不带文字都可以(9.9),否则得分为6.8。
还有一点 html 电子邮件(带有链接和 div)也可以。
会是什么?
【问题讨论】:
-
您是否使用
var_dump验证了DKIM_*常量? -
看看DKIM unit test。您还可以通过启用异常获得更多错误报告:
$mail = new PHPMailer(true);。最新的 PHPMailer 是 5.2.10,但没有与 DKIM 相关的更改。
标签: php email smtp phpmailer dkim