我需要在此插件中为wp_mail()设置“ Envelope-From”标头,但无法正常工作

时间:2019-10-04 13:13:47

标签: wordpress phpmailer

我们在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();

主持人说,问题是因为我们没有有效的“信封-发件人”和“发件人”,但是我该如何添加呢?

2 个答案:

答案 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/进行修复。