Php 发布帖子时如何发送电子邮件?

Php 发布帖子时如何发送电子邮件?,php,wordpress,sms,wordpress-hook,Php,Wordpress,Sms,Wordpress Hook,我想在发布文章时发送一封电子邮件,但我不想使用插件。 我将下面的代码添加到主题文件夹的functions.php中,但它不会向我发送任何电子邮件。它转到另一部分 function dothisfunction() { $sent = wp_mail("nadia.amoee@gmail.com","sms test", "message"); if($sent) { echo "sent"; }else { echo "fail

我想在发布文章时发送一封电子邮件,但我不想使用插件。 我将下面的代码添加到主题文件夹的functions.php中,但它不会向我发送任何电子邮件。它转到另一部分

 function dothisfunction() {
     $sent = wp_mail("nadia.amoee@gmail.com","sms test", "message");
     if($sent) {
         echo "sent";
     }else {
         echo "failed";
     }

 }
 add_action( 'publish_post', 'dothisfunction' );

您可能有以下原因之一无法发送该邮件

1) 可能存在PHPMailer异常:wp_邮件失败,请尝试使用以下代码调试错误

// show wp_mail() errors
add_action( 'wp_mail_failed', 'onMailError', 10, 1 );
function onMailError( $wp_error ) {
    echo "<pre>";
    print_r($wp_error);
    echo "</pre>";
}
3) 您可能遇到服务器问题,因为“未接收”与“未发送”的含义不同,这是故障排除中的一个重要区别

如果其他电子邮件地址正在接收,那么很可能是有什么东西在您列出的接收主机上标记您的邮件

4) 并非所有wordpress/服务器配置都允许默认的wordpress wp_邮件功能发送邮件。当然,在本地(主机)服务器上进行测试时,许多ISP会阻止默认的发送邮件流量。有时,阻止会悄悄进行,所以看起来一切都正常,但邮件永远不会被发送。帮助的是安装(或类似)以便可以配置传出SMTP服务器(带或不带身份验证)

5) 您的电子邮件可能被标记为垃圾邮件,或者只是因为您的电子邮件提供商不允许它进入您的收件箱

你有SPF记录设置吗?如果您正在从您的网站发送电子邮件,并且将发件人标题设置为
@gmail.com
@hotmail.com
,这肯定不会到达您的收件箱,因为电子邮件不是来自gmail或hotmail服务器,而是来自您的,因此它认为您正在尝试某种钓鱼攻击

所以你也应该检查你的垃圾邮件/垃圾文件夹是否被拦截

注意:有许多与此问题相关的链接,您可以访问 但大家最喜欢的是使用
WORDPRESS MAIL SMTP插件,我在第4点中提到了它,它解决了
超过95%的人


使用一些SMTP服务器,您应该解决这个问题。
您确定您的web主机支持电子邮件发送吗?他们经常被列入黑名单

您可以使用“wp\u mail\u failed”操作捕获发送错误:
$mailResult = false;
$mailResult = wp_mail( 'youremail@bla.com', 'test if mail works', 'hurray' );
echo $mailResult;