为什么wp_mail()不让我设置From:头,而普通的老式PHP mail()会呢?

时间:2011-02-10 作者:helenhousandi

当我使用wp_mail( $to, $subject, $message, $headers ) (当然,有了适当的值),发送电子邮件时会使用一个发件人名称和一封我在任何地方都找不到的电子邮件(即使在PHP或Apache设置中也找不到)。但是,使用mail( $to, $subject, $message, $headers ) 相反,效果很好。会发生什么wp_mail() 造成这种情况?

5 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好@helenyhou:

您可以设置标题,但不能使用参数。WordPress使用"hooks"\'wp_mail_from\' 和\'wp_mail_from_name\' 挂钩。

以下是您可以添加到主题的挂钩functions.php 要修改的文件"From:" 使用时的标题wp_mail() 发送至电子邮件地址Helen Hou-Sandi <[email protected]>:

add_filter(\'wp_mail_from\',\'yoursite_wp_mail_from\');
function yoursite_wp_mail_from($content_type) {
  return \'[email protected]\';
}
add_filter(\'wp_mail_from_name\',\'yoursite_wp_mail_from_name\');
function yoursite_wp_mail_from_name($name) {
  return \'Helen Hou-Sandi\';
}

SO网友:John P Bloch

如果你用的是From: "Your Name" <[email protected]>\\r\\n 在你的邮件头中设置格式,你应该不会有问题(除非你安装了一个覆盖wp\\u邮件功能的插件)。

然而,正如Mike所说,您可以使用这些过滤器过滤最终值,或者您可以只安装以下插件:

Send From

它将为您提供一个选项设置,以确定要在中使用的名称和电子邮件wp_mail().

SO网友:Scott

很抱歉,重新提出一个旧问题,但通过标题设置这样是否更好:

$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().

SO网友:Sjors Hijgenaar

这有点像黑客,但你也可以使用Reply To 标题标记:

$headers = \'Reply-To: "Aaren A. Aarenson" <[email protected]>\';

可悲的是adds “发件人”列表中的电子邮件地址,以及答复意味着您必须手动删除中配置的地址wp_mail_from 滤器

SO网友:Tigran

我也有同样的问题。对我来说,托管提供商(BlueHost)阻止更改from字段。他们在这里解释https://my.bluehost.com/cgi/help/206 .

正如他们所说的,我通过将电子邮件添加到cPanel邮箱解决了这个问题。

结束

相关推荐

New post email alert

我想显示一个复选框,其中包含通过电子邮件订阅网站的选项我看到一个wordpress博客,上面的复选框旁边有以下标签通过电子邮件订阅此网站问题是我找不到显示它的插件:我尝试了Subscribe2、Post Notification和Gurken进行评论订阅。你知道我需要安装什么插件吗?