当我使用wp_mail( $to, $subject, $message, $headers )
(当然有适当的值)时,将使用发自名称的电子邮件和未在我能找到的任何地方设置的电子邮件(即使在PHP或Apache设置中也是如此)发送电子邮件。但是,使用mail( $to, $subject, $message, $headers )
替代方法就可以了。会发生什么wp_mail()
导致这种情况?
当我使用wp_mail( $to, $subject, $message, $headers )
(当然有适当的值)时,将使用发自名称的电子邮件和未在我能找到的任何地方设置的电子邮件(即使在PHP或Apache设置中也是如此)发送电子邮件。但是,使用mail( $to, $subject, $message, $headers )
替代方法就可以了。会发生什么wp_mail()
导致这种情况?
Answers:
嗨@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';
}
wp_mail()
,然后在之后将其删除。至于为什么设置标头起作用,我不知道您的其他用例是什么,但是如果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()之后将其删除。
site_url()
代替get_bloginfo('wpurl')
get_bloginfo('wpurl')
:site_url()
已经返回。get_bloginfo('home')
并get_bloginfo('siteurl')
已弃用。developer.wordpress.org/reference/functions/get_bloginfo
这有点hack,但是您也可以使用Reply To
header标记:
$headers = 'Reply-To: "Aaren A. Aarenson" <aaron@somemail.com>';
遗憾的是,这会将电子邮件地址添加到“发件人”列表中,而答复意味着您将必须手动删除wp_mail_from
过滤器中配置的地址。
我有同样的问题。对我来说,托管服务提供商(BlueHost)阻止更改from字段。他们在这里对其进行了解释https://my.bluehost.com/cgi/help/206。
我通过将电子邮件添加到cPanel邮箱中来解决问题,就像他们说的那样。