Jacky's Blog Jacky's Blog
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
首页 › 干货 › WordPress 整合阿里云邮件推送

WordPress 整合阿里云邮件推送

Jacky
12月 31, 2016干货阅读 4,750

阿里云邮件推送(Direct Mail)是一款简单高效的电子邮件发送服务,它构建在可靠稳定的阿里云基础之上,帮助您快速、精准地实现事务邮件、通知邮件和批量邮件的发送。邮件推送历经两年双11考验,在发送速度、系统稳定性和到达率上表现优异;提供丰富的接口和灵活的使用方式,为企业和开发者解决邮件投递的难题,用户无需自建邮件服务器,开通服务即可享受阿里云优质的邮件服务,获得邮件投递的最佳实践。

今天博主就利用阿里云邮件推送服务了,实现 WordPress 内部的邮件发送,同时添加了自动发送回复提醒邮件的功能。

阿里云邮件推送服务开通地址:https://www.aliyun.com/product/directmail

申请需要实名认证过的账号,免费版的推送套餐为 200 封邮件/天。

由于网上的函数年久失修,下面就来分享下我的教程与代码

邮件推送的部署

1.开通完成后,在管理控制台中添加发信域名

WordPress 整合阿里云邮件推送-Jacky's Blog

2.点击配置,

WordPress 整合阿里云邮件推送-Jacky's Blog

假设申请的域名为 notice.xxx.com,请对照设置解析

WordPress 整合阿里云邮件推送-Jacky's Blog

配置完成后,点击验证。通过验证后,在发信地址中添加发信地址:) 记得类型选择为触发邮件,将回信地址设置为自己的邮箱。

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 日,解决单引号反转义失败的问题

最后的效果是这样的

WordPress 整合阿里云邮件推送-Jacky's Blog

文章最后修订于 2018年9月16日

赞(3)
iOS 固件下载中心
上一篇
My 2016
下一篇
再想想
所有评论(7)
  • 远哥制造

    站长你的主题真洁净很好看的样子!

    6年前 回复
    • Jacky

      @远哥制造: 😆 嗯

      6年前 回复
    • 远哥制造

      @Jacky: 主题可否分享下?实在是忍不住了……

      6年前 回复
    • 远哥制造

      @远哥制造: 不用了,话说不能删除评论诶……

      6年前 回复
    • Jacky

      @远哥制造: 抱歉,本主题为付费主题,并经过了一些自定义修改。受激活原因的影响,所以不能提供。

      本站的评论不支持自己删除。

      6年前 回复
  • CallanChen

    :mrgreen: GET到了姿势。

    6年前 回复
    • Jacky

      @CallanChen: 嘿嘿 :mrgreen:

      6年前 回复
近期评论
  • Jacky发表在《Nginx UI》
  • daiwenzh5发表在《Nginx UI》
  • Jacky发表在《Nginx UI》
  • daiwenzh5发表在《Nginx UI》
  • Jacky发表在《Nginx UI》
7 3
  • 3
  • 7
Copyright © 2016-2023 Jacky's Blog. Designed by nicetheme.
粤ICP备16016168号-1
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
# Mac # # Apple # # OS X # # iOS # # macOS #
Jacky
PHP C C++ Python | 舞象之年 | 物联网工程
174
文章
169
评论
267
喜欢