我们在Hetzner上托管的wordpress网站发送的电子邮件直接成为垃圾邮件,我们在其他网站上使用了一个简单的插件,但由于某些原因在该网站上无法使用。
插件很简单,这就是其中的全部内容:
class email_return_path {
function __construct() {
add_action( 'phpmailer_init', array( $this, 'fix' ) );
}
function fix( $phpmailer ) {
$phpmailer->Sender = $phpmailer->From;
}
}
new email_return_path();
主持人说,问题是因为我们没有有效的“信封-发件人”和“发件人”,但是我该如何添加呢?
答案 0 :(得分:0)
此代码是多余的-当setting the from address using setFrom()
和also handles it if Sender
is not set when it sends an SMTP MAIL FROM
command时,PHPMailer已经完全这样做了。
因此,除此之外,您还需要弄清楚正在误入歧途的原因;收到的消息很可能包含标头,告诉您出了什么问题,请检查一下。 The PHPMailer deliverability guide还包含有关其他原因的有用建议。
一个可能的原因是SPF失败; SPF特别适用于信封发件人地址(而不是发件人标头),如果不允许这样做,则几乎可以确定您最终会进入垃圾邮件文件夹,或者如果您的DMARC政策如此,则最终将其全部退回。
答案 1 :(得分:0)
上一个答案仅部分正确:setFrom()
仅在第三个参数未设置为false的情况下设置发送方。不幸的是,这是Wordpress内置函数wp_mail()
现在正在做的事情:https://core.trac.wordpress.org/browser/trunk/src/wp-includes/pluggable.php?rev=47494#L358
此外,同步是正确的,如果通过SMTP发送电子邮件,将自动设置发件人。但是,如果使用PHP mail()
函数(我假设它是Wordpress的默认值),即PHPmailer使用mailSend()
函数时,情况并非如此。
请参见https://www.webdezign.co.uk/avoid-wordpress-emails-ending-spam-folder/或https://cobbledco.de/set-envelope-from-header-for-wp-mail/进行修复。