阿里云邮件推送(Direct Mail)是一款简单高效的电子邮件发送服务,它构建在可靠稳定的阿里云基础之上,帮助您快速、精准地实现事务邮件、通知邮件和批量邮件的发送。邮件推送历经两年双11考验,在发送速度、系统稳定性和到达率上表现优异;提供丰富的接口和灵活的使用方式,为企业和开发者解决邮件投递的难题,用户无需自建邮件服务器,开通服务即可享受阿里云优质的邮件服务,获得邮件投递的最佳实践。
今天博主就利用阿里云邮件推送服务了,实现 WordPress 内部的邮件发送,同时添加了自动发送回复提醒邮件的功能。
阿里云邮件推送服务开通地址:https://www.aliyun.com/product/directmail
申请需要实名认证过的账号,免费版的推送套餐为 200 封邮件/天。
由于网上的函数年久失修,下面就来分享下我的教程与代码
邮件推送的部署
1.开通完成后,在管理控制台中添加发信域名
2.点击配置,
假设申请的域名为 notice.xxx.com,请对照设置解析
配置完成后,点击验证。通过验证后,在发信地址中添加发信地址:) 记得类型选择为触发邮件,将回信地址设置为自己的邮箱。
WordPress 使用外部 STMP 服务器
将代码添加到 functions.php(或者被其引用的 PHP 文件中)
//使用 STMP 发送邮件
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp( $phpmailer ) {
$phpmailer->FromName = '0xJacky'; //发件人
$phpmailer->Host = 'smtpdm.aliyun.com'; //修改为你使用的 SMTP 服务器
$phpmailer->Port = 465; //SMTP 端口,开启了 SSL 加密
$phpmailer->Username = 'service@mail.jackyu.cn'; //邮箱账户
$phpmailer->Password = '*********'; //输入你对应的邮箱密码,这里使用了*代替
$phpmailer->From = 'service@mail.jackyu.cn'; //你的邮箱
$phpmailer->SMTPAuth = true;
$phpmailer->SMTPSecure = 'ssl'; //tls or ssl (port=25留空,465为ssl)
$phpmailer->IsSMTP();
}
WordPress 添加自动发送回复提醒邮件的功能
将代码添加到 functions.php(或者被其引用的 PHP 文件中)
function comment_mail_notify( $comment_id ) {
$admin_email = get_bloginfo ('admin_email');
$comment = get_comment($comment_id);
$comment_author_email = trim($comment->comment_author_email);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
$to = $parent_id ? trim(get_comment($parent_id)->comment_author_email) : '';
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam')) {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
$subject = '您在 [' . wp_specialchars_decode(get_option("blogname"), ENT_QUOTES) . '] 的评论有了新的回复';
$message = "<div style=\"-moz-border-radius: 5px;-webkit-border-radius: 5px;-khtml-border-radius: 5px;border-radius: 5px;background-color:white;border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;width:90%;margin:50px auto;color:#555555;font-family:Century Gothic,Trebuchet MS,Hiragino Sans GB,微软雅黑,Microsoft Yahei,Tahoma,Helvetica,Arial,SimSun,sans-serif;font-size:12px;\"><h2 style=\"border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;\"><span style=\"color: #12ADDB;font-weight: bold;\">> </span>";
$message .= sprintf("您在 <a style=\"text-decoration:none;color: #12ADDB;\" href=\"%s\" target=\"_blank\">%s</a> 博客上的留言有回复啦!</h2>", get_option('home'), get_option('blogname'));
$message .= sprintf("<div style=\"padding:0 12px 0 12px;margin-top:18px\"><p>亲爱的 %s, 您好!您曾在文章《%s》上发表评论:</p><p style=\"background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0\">%s</p><p>%s给您的回复如下:</p><p style=\"background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0\">%s</p><p>您可以点击<a href=\"%s\">查看回复的完整内容</a>,欢迎再次光临<a href=\"%s\">%s</a> 。</p><p style=\"color: #000;background: #f5f5f5;font-size:11px;border: solid 1px #eee;padding: 2px 10px;\">请注意:此邮件由 <a href=\"%s\">%s</a> 自动发送,请勿直接回复。<br />如果此邮件不是您请求的,请忽略并删除!</p></div></div>",
trim(get_comment($parent_id)->comment_author),
get_the_title($comment->comment_post_ID),
trim(get_comment($parent_id)->comment_content),
trim($comment->comment_author), trim($comment->comment_content),
htmlspecialchars(get_comment_link($parent_id, array('type' => 'comment'))),
get_option('home'), get_option('blogname'), get_option('home'), get_option('blogname'));
$from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
$headers = "Content-Type: text/html; charset=" . get_option('blog_charset');
wp_mail( $to, $subject, $message, $headers );
}
}
add_action('comment_post', 'comment_mail_notify');
配置完成后,如果需要测试,请将 && ($to != $admin_email)
删除,然后回复自己的评论就可以检查了。
# 代码更新于 2018 年 9 月 16 日,解决单引号反转义失败的问题
最后的效果是这样的
文章最后修订于 2018年9月16日
站长你的主题真洁净很好看的样子!
@远哥制造: 😆 嗯
@Jacky: 主题可否分享下?实在是忍不住了……
@远哥制造: 不用了,话说不能删除评论诶……
@远哥制造: 抱歉,本主题为付费主题,并经过了一些自定义修改。受激活原因的影响,所以不能提供。
本站的评论不支持自己删除。
GET到了姿势。
@CallanChen: 嘿嘿