发布帖子时如何发送电子邮件?
How to send an email when publish posts?
我想在发布时发送一封电子邮件 post 但我不想使用插件。
我将以下代码添加到我的主题文件夹的 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 class 通过 PHP 的邮件功能发送电子邮件。
由于 PHP 的邮件功能 returns 执行后信息很少(只有 TRUE 或 FALSE),我建议暂时将您的功能剥离到最低限度,以查看 wp_mail 功能有效。
$mailResult = false;
$mailResult = wp_mail( 'youremail@bla.com', 'test if mail works', 'hurray' );
echo $mailResult;
3) 您可能遇到了服务器问题,因为 "Not received" 与 "not sent" 的含义不同,这是故障排除中的一个重要区别。
如果其他电子邮件地址正在接收,那么很可能是某些东西在您列出的接收主机上标记了您的邮件。
4) 并非所有 wordpress/server 配置都允许默认的 Wordpress wp_mail 功能发送邮件。当然,在本地(主机)服务器上进行测试时,许多 ISP 会阻止默认的外发邮件流量。有时阻塞会悄无声息地进行,所以看起来一切正常,但邮件永远不会发送。有帮助的是安装 WP Mail SMTP plugin(或类似的),以便您可以配置传出 SMTP 服务器(有或没有身份验证)。
5) 您的电子邮件可能被标记为垃圾邮件,或者只是您的电子邮件提供商不允许它到达您的收件箱。
您是否设置了 SPF 记录?如果您从您的网站发送电子邮件,并将发件人 header 设置为 @gmail.com
或 @hotmail.com
,这肯定不会到达您的收件箱,因为电子邮件不是来自 gmail或 hotmail 服务器,它来自您的服务器,所以它认为您正在尝试进行网络钓鱼攻击。
所以你也应该检查你的 spam/trash 文件夹是否被拦截。
NOTE : There are many links related to this issue which you can go for
but the ultimate favorite for everybody is to use WORDPRESS MAIL SMTP PLUGIN
which i mentioned in point 4 and that resolves the issue for
more than 95% of people.
使用一些 SMTP 服务器,你应该可以解决。
您确定您的虚拟主机支持电子邮件发送吗?他们经常被列入黑名单
我想在发布时发送一封电子邮件 post 但我不想使用插件。 我将以下代码添加到我的主题文件夹的 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 class 通过 PHP 的邮件功能发送电子邮件。
由于 PHP 的邮件功能 returns 执行后信息很少(只有 TRUE 或 FALSE),我建议暂时将您的功能剥离到最低限度,以查看 wp_mail 功能有效。
$mailResult = false;
$mailResult = wp_mail( 'youremail@bla.com', 'test if mail works', 'hurray' );
echo $mailResult;
3) 您可能遇到了服务器问题,因为 "Not received" 与 "not sent" 的含义不同,这是故障排除中的一个重要区别。
如果其他电子邮件地址正在接收,那么很可能是某些东西在您列出的接收主机上标记了您的邮件。
4) 并非所有 wordpress/server 配置都允许默认的 Wordpress wp_mail 功能发送邮件。当然,在本地(主机)服务器上进行测试时,许多 ISP 会阻止默认的外发邮件流量。有时阻塞会悄无声息地进行,所以看起来一切正常,但邮件永远不会发送。有帮助的是安装 WP Mail SMTP plugin(或类似的),以便您可以配置传出 SMTP 服务器(有或没有身份验证)。
5) 您的电子邮件可能被标记为垃圾邮件,或者只是您的电子邮件提供商不允许它到达您的收件箱。
您是否设置了 SPF 记录?如果您从您的网站发送电子邮件,并将发件人 header 设置为 @gmail.com
或 @hotmail.com
,这肯定不会到达您的收件箱,因为电子邮件不是来自 gmail或 hotmail 服务器,它来自您的服务器,所以它认为您正在尝试进行网络钓鱼攻击。
所以你也应该检查你的 spam/trash 文件夹是否被拦截。
NOTE : There are many links related to this issue which you can go for but the ultimate favorite for everybody is to use
WORDPRESS MAIL SMTP PLUGIN
which i mentioned in point 4 and that resolves the issue for more than 95% of people.
使用一些 SMTP 服务器,你应该可以解决。 您确定您的虚拟主机支持电子邮件发送吗?他们经常被列入黑名单