当我使用wp_mail( $to, $subject, $message, $headers )
(当然,有了适当的值),发送电子邮件时会使用一个发件人名称和一封我在任何地方都找不到的电子邮件(即使在PHP或Apache设置中也找不到)。但是,使用mail( $to, $subject, $message, $headers )
相反,效果很好。会发生什么wp_mail()
造成这种情况?
为什么wp_mail()不让我设置From:头,而普通的老式PHP mail()会呢?
你好@helenyhou:
您可以设置标题,但不能使用参数。WordPress使用"hooks"\'wp_mail_from\' 和\'wp_mail_from_name\'
挂钩。
以下是您可以添加到主题的挂钩functions.php
要修改的文件"From:"
使用时的标题wp_mail()
发送至电子邮件地址Helen Hou-Sandi <helenyhou@example.com>
:
add_filter(\'wp_mail_from\',\'yoursite_wp_mail_from\');
function yoursite_wp_mail_from($content_type) {
return \'helenyhou@example.com\';
}
add_filter(\'wp_mail_from_name\',\'yoursite_wp_mail_from_name\');
function yoursite_wp_mail_from_name($name) {
return \'Helen Hou-Sandi\';
}
如果你用的是From: "Your Name" <youremail@example.com>\\r\\n
在你的邮件头中设置格式,你应该不会有问题(除非你安装了一个覆盖wp\\u邮件功能的插件)。
然而,正如Mike所说,您可以使用这些过滤器过滤最终值,或者您可以只安装以下插件:
它将为您提供一个选项设置,以确定要在中使用的名称和电子邮件wp_mail()
.很抱歉,重新提出一个旧问题,但通过标题设置这样是否更好:
$subject = "MyPlugin: Alert (".get_bloginfo(\'wpurl\').")";
$headers = "MIME-Version: 1.0" . "\\r\\n";
$headers .= "Content-type: text/html; charset=".get_bloginfo(\'charset\')."" . "\\r\\n";
$headers .= "From: MyPlugin <".$this->settings[\'from_address\'].">" . "\\r\\n";
wp_mail($this->settings[\'notify_address\'], $subject, $alertMessage, $headers);
这样,您就不必担心使用过滤器然后在之后删除wp_mail()
.这有点像黑客,但你也可以使用Reply To
标题标记:
$headers = \'Reply-To: "Aaren A. Aarenson" <aaron@somemail.com>\';
wp_mail_from
滤器我也有同样的问题。对我来说,托管提供商(BlueHost)阻止更改from字段。他们在这里解释https://my.bluehost.com/cgi/help/206 .
正如他们所说的,我通过将电子邮件添加到cPanel邮箱解决了这个问题。