Email always ends up in spam

时间:2019-03-25 作者:jockebq

我创建了一个功能,当按下特定按钮时,我可以使用该功能发送电子邮件。这很有效,只是它总是以垃圾邮件而不是收件箱结束。

这是功能:

function search_notify_email() {
  // Set variables
  $email = $_POST[\'email\'];
  $title = $_POST[\'title\'];
  $content = $_POST[\'content\'];
  $location = $_POST[\'location\'];
  $siteurl = $_POST[\'siteurl\'];
  $networkurl = network_site_url();
  $themeurl = get_stylesheet_directory_uri();
  // Call Change Email to HTML function
  add_filter( \'wp_mail_content_type\', \'set_email_html_content_type\' );
    $to = $email;
    $subject = "Attention: Test!";
    $message = "<html>
    <body>
      Testing
    </body>
    </html>";
    $headers[] = \'From: Example <[email protected]>\';

    if ( wp_mail($to, $subject, $message, $headers) ) {
      // Success
    } else {
      // Error
    }
    die();
    // Remove filter HTML content type
    remove_filter( \'wp_mail_content_type\', \'set_email_html_content_type\' );
}
add_action(\'wp_ajax_nopriv_search_notify_email\', \'search_notify_email\');
add_action(\'wp_ajax_search_notify_email\', \'search_notify_email\');
我在我的网站上发送了其他与使用的电子邮件地址相同的电子邮件,但这些电子邮件不会被放在垃圾邮件文件夹中。

知道为什么会这样吗?

2 个回复
SO网友:MikeNGarrett

这可能是各种各样的事情,所以这个问题的任何答案都是猜测。请记住,标记为垃圾邮件的是电子邮件(以及发件人、域等的详细信息),而不是生成电子邮件的代码。

这就是说,我会首先调查发件人信息,以确保电子邮件中的标题设置为显示电子邮件是通过有效的电子邮件地址发送的,该地址的域和发件人的域相匹配,或者被授权代表该域发送。

您可以尝试以下测试服务MXToolbox 确保电子邮件成功送达。

SO网友:butlerblog

您在另一个答案的评论中提到,使用的电子邮件地址是真实地址。但是,你没有提到wp_mail() 实际上正在发送through 该账户(与from 这是不同的)。这似乎令人困惑,但这是一个重要的区别。

如果您尚未设置通过SMTP通过该帐户发送,而您只是替换了“发件人”地址,you are still sending through the web server\'s email server. 这一过程的某些部分会让你的邮件标题看起来像“垃圾邮件”

如果你没有连接wp_mail() 对于SMTP,我强烈建议您这样做。这将解决许多可能的垃圾邮件问题。如果你不能或不愿意,你仍然可以采取行动。

不连接时wp_mail() 对于经过身份验证的SMTP帐户,我建议您将“发件人”设置为与“发件人”地址相同的值。否则,在电子邮件标题中,如果这两个值不同,则会为垃圾邮件过滤器发出红旗。以下是操作方法:

add_action( \'phpmailer_init\', \'fix_my_email_return_path\' );

function fix_my_email_return_path( $phpmailer ) {
    $phpmailer->Sender = $phpmailer->From;
}
a more detailed overview of the approach in this article.