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

时间:2019-05-28 10:49:15

标签: php wordpress sms

我想在发布帖子时发送电子邮件,并且我不想使用插件。 我将以下代码添加到主题文件夹的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' );

2 个答案:

答案 0 :(得分:0)

您可能由于以下原因之一未发送邮件

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

// show wp_mail() errors
add_action( 'wp_mail_failed', 'onMailError', 10, 1 );
function onMailError( $wp_error ) {
    echo "<pre>";
    print_r($wp_error);
    echo "</pre>";
}

2)Wordpress依靠PHPMailer类通过PHP的邮件功能发送电子邮件。

由于PHP的mail函数在执行后返回的信息很少(只有TRUE或FALSE),因此我建议暂时将函数精简到最小,以查看wp_mail函数是否起作用。

$mailResult = false;
$mailResult = wp_mail( 'youremail@bla.com', 'test if mail works', 'hurray' );
echo $mailResult;

3)您可能会遇到服务器问题,因为“未收到”与“未发送”并不相同,这是故障排除中的重要区别。

如果正在接收其他电子邮件地址,则可能是在您列出的接收主机上标记了您的邮件。

4)并非所有的wordpress /服务器配置都允许默认的Wordpress wp_mail功能发送邮件。当然,在本地(主机)服务器上进行测试时,许多ISP会阻止默认的传出邮件流量。有时,阻止会以静默方式继续进行,因此看起来一切正常,但是邮件永远不会发送。有用的是安装WP Mail SMTP plugin(或类似版本),以便您可以配置传出SMTP服务器(带有或不带有身份验证)。

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

您是否设置了SPF记录?如果您是从网站发送电子邮件,并且将发件人标头设置为@gmail.com@hotmail.com,则该邮件肯定不会到达您的收件箱,因为该电子邮件不是来自gmail或hotmail服务器,它来自您的,因此它认为您正在尝试进行网络钓鱼攻击。

因此,您还应该检查垃圾邮件/垃圾文件夹是否被拦截。

  

注意:有很多与此问题相关的链接,您可以通过这些链接   但每个人最终的最爱是使用我在第4点中提到的WORDPRESS MAIL SMTP PLUGIN,它可以解决以下问题:   超过95%的人。

答案 1 :(得分:0)

使用一些SMTP服务器,您应该解决。 您确定您的网络托管支持电子邮件发送吗?他们经常被列入黑名单