php - 发布帖子时如何发送电子邮件?
问题描述
我想在发布帖子时发送电子邮件,我不想使用插件。我将以下代码添加到我的主题文件夹的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_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/server 配置都允许默认的 Wordpress wp_mail 功能发送邮件。当然,在本地(主机)服务器上进行测试时,许多 ISP 会阻止默认的外发邮件流量。有时阻塞会默默地进行,所以看起来一切正常,但邮件永远不会发送。有帮助的是安装WP Mail SMTP 插件(或类似插件),以便您可以配置传出 SMTP 服务器(带或不带身份验证)。
5) 您的电子邮件有可能被标记为垃圾邮件,或者只是您的电子邮件提供商不允许它到达您的收件箱。
你有 SPF 记录设置吗?如果您从您的网站发送电子邮件,并且将 from 标头设置为@gmail.com
or @hotmail.com
,这肯定不会到达您的收件箱,因为电子邮件不是来自 gmail 或 hotmail 服务器,它来自您的,所以它认为您是尝试一些网络钓鱼攻击。
因此,您还应该检查您的垃圾邮件/垃圾文件夹是否被拦截。
注意:有很多与这个问题相关的链接,你可以去寻找,但每个人最喜欢的是使用
WORDPRESS MAIL SMTP PLUGIN
我在第 4 点中提到的,它为超过 95% 的人解决了这个问题。
推荐阅读
- ios - UINavigationController 将整个 UIView 推到左上角
- html - HTML & CSS 以百分比或视口宽度设置项目周围的空间宽度
- json - 使用数字作为属性名称构造 JSON
- sql - 使用 ROW_NUMBER () OVER(PARTITION BY... ORDER BY) 更新语句
- amazon-web-services - Redshift 或平面设计中的维度建模 - 成本与时间
- java - Kotlin 如何使用 JDK 1.8 调用 Java 11 代码?
- python - 如何加载和解析 JSON 文件
- scala - Spark从每个镶木地板文件中获取一行
- reporting-services - 报表生成器 - 连接字符串 - 在 1 个地方工作,但在另一个地方不工作
- java - 如何将 Java CRC32 校验和计算转换为 PHP 代码