【问题标题】:How to send an email when publish posts?发布帖子时如何发送电子邮件?
【发布时间】:2019-05-28 10:49:15
【问题描述】:

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

【问题讨论】:

标签: php wordpress sms wordpress-hook


【解决方案1】:

您可能有以下原因之一无法发送它

1) 可能有 PHPMailer 异常 : wp_mail is getting failed 所以尝试使用下面的代码调试错误

// 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 的 mail 函数发送邮件。

由于 PHP 的 mail 函数在执行后返回的信息非常少(只有 TRUE 或 FALSE),我建议暂时将您的函数精简到最低限度,以便查看 wp_mail 函数是否有效。

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

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

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

4) 并非所有 wordpress/server 配置都允许默认的 Wordpress wp_mail 函数发送邮件。当然,在本地(主机)服务器上进行测试时,许多 ISP 会阻止默认的外发邮件流量。有时阻塞会默默地进行,所以看起来一切正常,但邮件永远不会发送。有帮助的是安装WP Mail SMTP plugin(或类似的),这样您就可以配置传出 SMTP 服务器(有或没有身份验证)。

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多