[英]Sending mail using phpmailer using smpt with dkim going thru postfix
所以我使用phpmailer使用smpt,它将通过postfix发送电子邮件。 当我从我的电子邮件发送电子邮件时,它在使用DKIM和DMARC时没有任何问题。 但是当我使用phpmailer发送时我没有得到DKIM。
<?php
function send_email($to, $from_email, $from_name, $subject, $body,
$is_html=false, $attachments=null) {
global $smtp_host, $smtp_port, $smtp_user, $smtp_password;
try {
$email = new PHPMailer(true);
if ($from_email === $smtp_user) {
$email->isSMTP();
$email->Host = $smtp_host;
$email->Port = $smtp_port;
$email->SMTPAuth = true;
$email->Username = $smtp_user;
$email->Password = $smtp_password;
$email->SMTPSecure = 'tls';
}
$email->CharSet = 'UTF-8';
$email->From = $from_email;
$email->FromName = $from_email;
$email->Subject = $subject;
$email->Body = $body;
$email->AddAddress($to);
if ($is_html == true) {
$email->IsHTML(true);
$email->Encoding = 'base64';
}
if ($attachments != null) {
foreach ($attachments as $attachment) {
$apath = $attachment["path"];
$aname = $attachment["name"];
$email->AddAttachment($apath , $aname);
}
}
$email->Send();
$status = "success";
}
catch (phpmailerException $e) {
$status = $e->errorMessage();
}
catch (Exception $e) {
$status = $e->getMessage();
}
return $status;
}
所以我想我需要将它添加到我的代码中,但我不确定是否必须将其添加到代码中。 我以为opendkim只会将DKIM添加到标题中。 但事实并非如此。
$email->DKIM_domain = 'mydomain.com';
$email->DKIM_private = '/path/to/private_key';
$email->DKIM_selector = 'default';
$email->DKIM_passphrase = '1234567';
您可以通过多种方式实施DKIM签名。
选择器需要匹配您正在签名的密钥,因此如果您有一个名为s1
的选择器,您可能希望公钥在域DNS的名为s1._domainkey
的TXT记录中可用。 匹配的私钥只需要安全且在服务器上无法访问。
无论您使用哪种签名机制,DNS和密钥安排都是相同的。 如果您使用PHPMailer的DKIM,则不需要openDKIM,但如果您想使用OpenDKIM,则需要告诉它要在其配置中使用哪个选择器。 一些邮件服务器(如我使用的GreenArrow )允许通过自定义邮件头动态控制选择器,但我不认为OpenDKIM支持这一点。 您可以在postfix中设置允许类似内容的虚拟MTA。
有关PHPMailer参考,请查看提供的DKIM签名示例以及测试套件中的DKIM测试 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.