为什么wp_mail()不让我从以下设置以下内容:纯旧php mail()会呢?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/9102

  •  16-10-2019
  •  | 
  •  

当我使用时 wp_mail( $to, $subject, $message, $headers ) (当然,有了值的值),电子邮件将带有来自我可以找到的任何地方的名称和电子邮件(甚至在PHP或Apache设置中)发送的。但是,使用 mail( $to, $subject, $message, $headers ) 相反,工作正常。可能会发生什么 wp_mail() 造成这个?

有帮助吗?

解决方案

你好 @helenyhou:

您可以设置标题,而不是使用参数。 WordPress使用 “钩子” 而您需要的钩子是 '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_Mail功能的插件)。

但是,正如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)阻止了从现场更改。他们在这里解释 https://my.bluehost.com/cgi/help/206 .

如他们所说,我通过将电子邮件添加到CPANEL邮箱中解决了问题。

许可以下: CC-BY-SA归因
scroll top