乐于分享
好东西不私藏

WordPress邮件SMTP配置及美化

本文最后更新于2018-08-09,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

最近乡下移动网又开始罢工了,这几天一直都是用手机流量开热点来保持站内正常更新,数量上确实严重缩水了,正好可以多花点时间折腾写教程WordPress默认有邮件发送提醒功能的,但那是由于一些虚拟主机商禁用了mail()以及服务器未开启465端口等诸多因素都会导致邮件发送功能的失效,并且发送的数量过多时被标记为垃圾邮件的概率非常高,因此一些站长纷纷使用SMTP代发,这里老夜就位大家带来详细的教程。

准备工作:

服务器开启465或25端口

SMTP是一种简单邮件传输协议,网站服务器要使用邮件发送功能就需要调用外部smtp服务器地址,邮箱自身也要开启smtp/pop功能才可以正常调用,同时服务器安全组还得开启25或465端口,25和465端口均是为SMTP服务器所开放,465端口采用加密方式发送邮件安全性更高。老夜目前已知阿里云和腾讯云已经禁止了25端口,所以大家还是乖乖用465端口吧!
至于如何开启安全组端口这里也不做说明了,不懂的可以提交工单问客服人员。如果是虚拟主机用户就不需要那么麻烦了,默认相应的端口都是开启的,但是有些虚拟主机不支持mail()函数也会导致邮件发送失败,具体信息请询问主机商吧!

获取邮箱的授权码

如果是新浪邮箱和阿里云邮箱,授权码就是登录密码。这里老夜是以QQ邮箱来进行测试的,需要找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务的授权码,一般在设置 — 账户中就能找到,如下图所示:

代码篇:

准备工作确定完成无误后就开始为WordPress配置SMTP了,代码改造比插件更加高效而且不会拖慢WordPress的响应时间,这里附上相关的代码,将下面中代码的信息适当的改为自己的,SMTP端口分为25或465两种选择,邮箱密码也在准备工作中为大家细述了。修改完代码之后复制丢到主题目录中的functions.php文件中即可生效。

//WordPress邮箱SMTP配置开始
//www.yeyulingfeng.com
function mail_smtp( $phpmailer ) {
    $phpmailer->FromName = '『夜雨聆风』'; //发件人名称
    $phpmailer->Host = 'smtp.qq.com'; //修改为你使用的邮箱SMTP服务器
    $phpmailer->Port = 465; //SMTP端口
    $phpmailer->Username = 'yeyulingfengblog@qq.com'; //邮箱账户
    $phpmailer->Password = '****'; //邮箱密码(此处填写QQ邮箱生成的授权码)
    $phpmailer->From = 'yeyulingfengblog@qq.com'; //邮箱账户
    $phpmailer->SMTPAuth = true;
    $phpmailer->SMTPSecure = 'ssl'; //tls or ssl (port=25时->留空,465时->ssl)
    $phpmailer->IsSMTP();
}
add_action('phpmailer_init', 'mail_smtp');
//www.yeyulingfeng.com
//WordPress邮箱SMTP配置end

考虑到国内的邮箱厂商非常的多,不同的邮箱SMTP服务器地址也是大不相同的,在此老夜搜索一些比较常用的邮箱SMTP服务器地址,其他本文没列出的邮箱SMTP地址大家可以直接百度一下就有了。将下面对应的SMTP填入上面的代码中,如果是QQ邮箱就不用改了老夜目前用的就是。

腾讯QQ邮箱:smtp.qq.com

Foxmail邮箱:smtp.foxmail.com

网易163邮箱:smtp.163.net

新浪免费邮箱:smtp.sina.com

腾讯企业邮箱:smtp.exmail.qq.com

雅虎免费邮箱:smtp.mail.yahoo.cn

网易126邮箱:smtp.126.com

搜狐免费邮箱:smtp.sohu.com

Gmail邮箱(目前gmail在国内貌似GG):smtp.gmail.com

插件篇:

上面的代码已经是非常的简单粗暴了,但是插件有些时候更深入人心,尤其是对一些懒人站长来说简直是不要太简单。这里老夜推荐的是一款叫做WP SMTP的WordPress插件,该插件数年未更新但是功能依旧强劲,也体验过其他SMTP插件都是花里胡哨还占用较大的资源,WP SMTP这匹老马老夜还是非常推荐的。
WP SMTP官方下载地址:https://wordpress.org/plugins/wp-smtp/
老夜备份下载地址:主力下载 备用下载
至于如何安装插件就此跳过,太简单了老夜不会~~~~
按照下面老夜的截图来改就oj8k了!

上面配置完成后保存更改,为了确保邮件发送功能是否能够正常使用,建议大家通过下方填写邮箱进行测试。如果能发送出邮件并接受到代表配置成功,反之按照老夜的教程一步步排查。

关于邮件美化

WordPress发送邮件至用户时由于默认样式特别的简单甚至还有点丑,没有任何的修饰美化使得邮件过于单调大大降低了用户回头率。因此这里老夜原本在另写一篇文章介绍的想想还是直接发出来,老规矩,什么都不需要改动,复制后直接丢到functions.php文件中即可!

//www.yeyulingfeng.com
//邮件评论美化开始function ludou_comment_mail_notify($comment_id, $comment_status) {
// 评论必须经过审核才会发送通知邮件
if ($comment_status !== ‘approve’ && $comment_status !== 1)
return;$comment = get_comment($comment_id);

if ($comment->comment_parent != ‘0’) {
$parent_comment = get_comment($comment->comment_parent);

// 邮件接收者email
$to = trim($parent_comment->comment_author_email);

// 邮件标题
$subject = ‘您在[‘ . get_option(“blogname”) . ‘]的留言有了新的回复’;

// 邮件内容,自行修改,支持HTML
$message = ‘<div style=”border-right:#666666 1px solid;border-radius:8px;color:#111;font-size:12px;width:702px;border-bottom:#666666 1px solid;font-family:微软雅黑,arial;margin:10px auto 0px;border-top:#666666 1px solid;border-left:#666666 1px solid”><div class=”adM”>
</div><div style=”width:100%;background:#666666;min-height:60px;color:white;border-radius:6px 6px 0 0″><span style=”line-height:60px;min-height:60px;margin-left:30px;font-size:12px”>您在<a style=”color:#00bbff;font-weight:600;text-decoration:none” href=”‘ . get_option(‘home’) . ‘” target=”_blank”>’ . get_option(‘blogname’) . ‘</a> 上的留言有回复啦!</span> </div>
<div style=”margin:0px auto;width:90%”>
<p>’ . trim($parent_comment->comment_author) . ‘, 您好!</p>
<p>您于’ . trim($parent_comment->comment_date) . ‘ 在文章《’ . get_the_title($comment->comment_post_ID) . ‘》上发表的评论: </p>
<p style=”border-bottom:#ddd 1px solid;border-left:#ddd 1px solid;padding-bottom:20px;background-color:#eee;margin:15px 0px;padding-left:20px;padding-right:20px;border-top:#ddd 1px solid;border-right:#ddd 1px solid;padding-top:20px”>’ . nl2br($parent_comment->comment_content) . ‘</p>
<p>’ . trim($comment->comment_author) . ‘ 于’ . trim($comment->comment_date) . ‘ 给您的回复如下: </p>
<p style=”border-bottom:#ddd 1px solid;border-left:#ddd 1px solid;padding-bottom:20px;background-color:#eee;margin:15px 0px;padding-left:20px;padding-right:20px;border-top:#ddd 1px solid;border-right:#ddd 1px solid;padding-top:20px”>’ . nl2br($comment->comment_content) . ‘</p>
//www.yeyulingfeng.com
<p>您可以点击 <a style=”color:#00bbff;text-decoration:none” href=”‘ . htmlspecialchars(get_comment_link($comment->comment_parent)). ‘” target=”_blank”>查看回复的完整內容</a></p>
<p>感谢您对 <a style=”color:#00bbff;text-decoration:none” href=”‘ . get_option(‘home’) . ‘” target=”_blank”>’ . get_option(‘blogname’) . ‘</a> 的关注,如您有任何疑问,欢迎在博客留言,我都会一一解答,么么哒!!!</p><p>(此邮件由系统自动发出,请勿回复。)</p></div></div>’;

$message_headers = “Content-Type: text/html; charset=\””.get_option(‘blog_charset’).”\”\n”;

// 不用给不填email的评论者和管理员发提醒邮件
if($to != ” && $to != get_bloginfo(‘admin_email’))
@wp_mail($to, $subject, $message, $message_headers);
}
}

// 编辑和管理员的回复直接发送提醒邮件,因为编辑和管理员的评论不需要审核
add_action(‘comment_post’, ‘ludou_comment_mail_notify’, 20, 2);

// 普通访客发表的评论,等博主审核后再发送提醒邮件
add_action(‘wp_set_comment_status’, ‘ludou_comment_mail_notify’, 20, 2);

//www.yeyulingfeng.com
//邮件评论美化end

最终效果图:

补充:

代码修改之前请先备份相关文件在进行操作编辑,修改后往往建议清理浏览器缓存刷新网站评论测试一下。上述的代码和插件老夜全部测试一遍均能完美实现邮件发送功能,若出现失败这里给出两条排查方法:虚拟主机需要支持main()函数,服务器需要在安全组中开启25或者465端口,然后确保邮箱信息填写正确以及邮箱的可用性。如有不懂的欢迎文章底部留言!!!

撰文不易,禁止转载抄袭!

 

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » WordPress邮件SMTP配置及美化

评论 13

2 + 3 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #0

    不错,去插件化才能安全。赞

    15年前 (2019-09-02)Windows 10 | Chrome 75.0.3770.142回复
    • 老夜

      WordPress尽量不要安装过多的插件

      老夜5年前 (2019-09-02)Windows 7 | Chrome 75.0.3770.142回复
  2. #0

    你好,大神,邮件已配置号,就是把美化的代码加到functions.php中后,网站打不开了,提示此站点遇到技术问题?求大神指导。

    章鱼爱分享5年前 (2019-08-06)Windows 10 | Chrome 70.0.3538.25回复
  3. #0

    qp内容qp

    Imogen Maguire6年前 (2019-06-19)Windows 8 | Chrome 66.0.3359.181回复
  4. #0

    插件出现了这个是怎么回事 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

    6666年前 (2019-06-03)Windows 10 | Chrome 70.0.3538.25回复
    • 老夜

      请确保邮箱POP服务已开启;服务器SMTP填写正确,前面是ssl;端口符合服务器邮箱规则:如阿里云服务器,已屏蔽25端口,需使用465端口;邮箱账号及密码或授权码输入正确!

      老夜6年前 (2019-06-04)Windows 7 | Chrome 73.0.3683.103回复
  5. #0

    //评论回复邮件通知(所有回复都邮件通知)
    function comment_mail_notify($comment_id) {
    $comment = get_comment($comment_id);
    $parent_id = $comment->comment_parent ? $comment->comment_parent : ”;
    $spam_confirmed = $comment->comment_approved;
    if (($parent_id != ”) && ($spam_confirmed != ‘spam’)) {
    $wp_email = ‘no-reply@’ . preg_replace(‘#^www\.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); //e-mail 发出点, no-reply 可改为可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = ‘您在 [‘ . get_option(“blogname”) . ‘] 的留言有了回复’;
    $message = ‘

    您在‘ . get_option(‘blogname’) . ‘
    博客上的留言有回复啦!

    ‘ . trim(get_comment($parent_id)->comment_author) . ‘, 您好!
    您曾在 [‘ . get_option(“blogname”) . ‘] 的文章
    《’ . get_the_title($comment->comment_post_ID) . ‘》 上发表评论:
    ‘ . nl2br(get_comment($parent_id)->comment_content) . ‘
    ‘ . trim($comment->comment_author) . ‘ 给您的回复如下:
    ‘ . nl2br($comment->comment_content) . ‘
    您可以点击 查看回复的完整內容
    欢迎再次光临 ‘ . get_option(‘blogname’) . ‘
    (此邮件由系统自动发出, 请勿回复.)

    ‘;

    $message = convert_smilies($message);
    $from = “From: \”” . get_option(‘blogname’) . “\” “;
    $headers = “$from\nContent-Type: text/html; charset=” . get_option(‘blog_charset’) . “\n”;
    wp_mail( $to, $subject, $message, $headers );
    //echo ‘mail to ‘, $to, ‘ ‘ , $subject, $message; // for testing
    }
    }
    add_action(‘comment_post’, ‘comment_mail_notify’);

    这段代码就可以用,但是就问题行段代码看不出有什么不一样的。

    闪电鹰6年前 (2019-04-30)Windows 10 | Chrome 74.0.3724.8回复
    • 老夜

      估计主题有差异

      老夜6年前 (2019-04-30)Windows 7 | Chrome 73.0.3683.86回复
  6. #0

    $subject = ‘您在[‘ . get_option(“blogname”) . ‘]的留言有了新的回复’;
    这行提示:因在wp-content/themes/jupiter/functions.php文件的486行有错误,您对PHP代码的修改已被回滚。请修复并重试。

    syntax error, unexpected ‘的留言有了新的回复’’ (T_STRING)

    闪电鹰6年前 (2019-04-29)Windows 10 | Chrome 74.0.3724.8回复
    • 老夜

      本站就是使用这串代码目前正常,因为主题不一致且看不到你邮箱是否配置成功这里也无法排查问题

      老夜6年前 (2019-04-29)Windows 7 | Chrome 73.0.3683.86回复
  7. #0

    有一个问题 我用的插件 设置好后 测试发送。我有4个qq号,只有两个qq邮箱能收到测试邮件,outlook邮箱也收不到

    coins6年前 (2019-02-01)Mac OS X | Safari浏览器 604.1回复
    • 老夜

      看看是不是被拦截放入垃圾箱了

      老夜6年前 (2019-02-06)Windows 7 | Chrome 71.0.3578.98回复
  8. #0

    不错不错

    诚信6年前 (2019-01-10)Windows 10 | Chrome 71.0.3578.98回复
×
订阅图标按钮