我创建了一个功能,当按下特定按钮时,我可以使用该功能发送电子邮件。这很有效,只是它总是以垃圾邮件而不是收件箱结束。
这是功能:
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\');
我在我的网站上发送了其他与使用的电子邮件地址相同的电子邮件,但这些电子邮件不会被放在垃圾邮件文件夹中。
知道为什么会这样吗?
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.