如何使用带有DKIM签名的Phpmailer发送电子邮件?

如何使用带有DKIM签名的Phpmailer发送电子邮件?,php,sendmail,postfix-mta,phpmailer,dkim,Php,Sendmail,Postfix Mta,Phpmailer,Dkim,我正在使用PHPmailer发送电子邮件 我安装了postfix服务和DKIM Milter来生成密钥 如果我使用命令行发送邮件,并且该邮件的DKIM签名显示为“signed by:mydomain.com”,则效果良好 但我想使用PHPmailer(5.1)发送支持DKIM签名的邮件,但返回以下内容: Authentication-Results: mx.google.com; spf=pass (google.com: domain of info@mydomain.com designat

我正在使用PHPmailer发送电子邮件

我安装了postfix服务和DKIM Milter来生成密钥

如果我使用命令行发送邮件,并且该邮件的DKIM签名显示为“signed by:mydomain.com”,则效果良好

但我想使用PHPmailer(5.1)发送支持DKIM签名的邮件,但返回以下内容:

Authentication-Results: mx.google.com; spf=pass (google.com: domain of info@mydomain.com designates 182.50.xxx.xxx as permitted sender) smtp.mail=info@mydomain.com; dkim=neutral (bad format) header.i=info@mydomain.com

DKIM-Signature: v=1; a=rsa-sha1; q=dns/txt; l=70; s=default;
    t=1325533594; c=relaxed/simple;
    h=From:To:Subject;
    d=mydomain.com; i=@mydomain.com;
    z=
    |
    |Subject:=20Testing=20email=20from=20phpmailer;
    bh=lC+16EvauA2HuJG03ArE6CtgLuY=;
    b=
我检查了class.phpmailer.php文件,它有一些DKIM选项:

  public $DKIM_selector   = 'default';

  /**
   * Used with DKIM DNS Resource Record
   * optional, in format of email address 'you@yourdomain.com'
   * @var string
   */
  public $DKIM_identity   = '';

  /**
   * Used with DKIM DNS Resource Record
   * optional, in format of email address 'you@yourdomain.com'
   * @var string
   */
  public $DKIM_domain     = '';

  /**
   * Used with DKIM DNS Resource Record
   * optional, in format of email address 'you@yourdomain.com'
   * @var string
   */
  public $DKIM_private    = '';

如何配置此选项?我知道公钥和私钥,但什么是$DKIM_private和$DKIM_identity?

$DKIM_private用于您的私钥和$DKIM_identity,我不确定,但它是可选的,您可以在此处找到更多信息:。下面是一些示例代码

$mail->DKIM_domain = 'mydomain.com';
$mail->DKIM_private = '/path/to/private_key';
$mail->DKIM_selector = 'default'; //this effects what you put in your DNS record
$mail->DKIM_passphrase = '1234567';

希望这有帮助

您需要分解
DKIM签名
标题,以便每个属性显示在新行上。DKIM的PHPMailer实现存在一些必须纠正的问题

$DKIM_identity
值是可选的。要了解
$DKIM_private
的作用,请参阅
DKIM_符号
方法。

从这里开始

在底部,单击“继续…”

它将允许您根据指令生成私钥/公钥


简而言之:-设置为使用私钥/公钥文件发送以在电子邮件头中添加dkim头-修改公钥的DNS txt记录

我发现最新版本使用sha256而不是sha1,因此现有dkim生成器()除非您进入class.phpmailer.php文件并将所有提到的sha256编辑回sha1,否则无法工作。这样做可以修复验证程序无法将sha256用于公钥的问题(给出错误)

因为它们是可选的,您可能不需要它们?@BloodyWorld如果您想发送带有DKIM签名的邮件,虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@Magicprog.fr中,他确实包含了他的答案的重要部分,解释了如何修复它-无论它是否正确-他发布的链接也不是关于回答问题的,因为这只是DKIM生成器的链接,所以在我看来,这是一个尝试回答,而不是一个仅链接的答案,谢谢
DKIM_private
是一个带密钥的文件路径,不是一个键字符串本身。唯一的答案是,实际上发现OP已经能够在PHPMailer中设置DKIM。。。但是Gmail不喜欢它+1.
$mail->DKIM_domain = 'mydomain.com';
$mail->DKIM_private = '/path/to/private_key';
$mail->DKIM_selector = 'default'; //this effects what you put in your DNS record
$mail->DKIM_passphrase = '1234567';