当前位置 : 首页 » 文章分类 :  开发  »  Hexo博客(26)自建博客评论系统之邮件通知

Hexo博客(26)自建博客评论系统之邮件通知

给自己的评论系统增加邮件通知,实现:
1、有除我自己外的新评论时给我的邮箱发邮件
2、凡是评论时留了email地址的用户,有别人回复其评论给其发邮件

2019.12更新,换了新的vps服务器,原来搭建好的邮件服务器用不了了,暂时未实现此功能。


SMTP服务选择

先简单调研了下,从SMTP服务提供方选择上大体分为两类方案:
一、自己在linux上搭建邮件服务器
二、使用第三方SMTP邮件服务

我觉得博客的评论通知是用自己的私人邮箱发出的感觉很不专业,必须是从我自己的域名发出的。
最后我选择完全自己配置一台邮件服务器,具备用自己域名的邮箱收发邮件的完整功能,还能在手机和电脑上连接,在java代码中发邮件当然也不在话下了。


自己搭建邮件MTA(SMTP服务器)

搭建邮件服务器的过程着实费劲,搞了一个多星期,详见笔记 Linux上搭建邮件服务器
发送代理我用的 sendmail, 其实 postfix 据说更简便,但我先安装了 mysql 5.6,再安装 postfix 时有个mysql依赖冲突了,无法安装。
接收代理用的 dovecot,具有imap和pop3收邮件的功能。
sendmail还开启了smtp认证,只能我自己的账号密码才能通过我的mta发邮件,避免成为垃圾邮件转发器。

使用第三方SMTP邮件服务(163邮箱等)

使用第三方SMTP邮件服务,也就是自己的个人邮箱账号发邮件,比如163或qq邮箱。
我没选择这种方式


邮件发送方式选择

从邮件发送方式上来分的话,还可以再分为:
1、直接在linux上用mail命令发送邮件。
2、在java代码中使用类似 Apache Commons Email 的第三方组件发送邮件

shell中用email命令发送邮件

在linux上使用 mail 命令发送邮件时默认使用的MTA 是sendmail,当然也可以改为 postfix,或者也可以配置第三方SMTP服务。

使用 mail 命令发送邮件
echo "测试邮件正文" | mail -s "mail命令测试主题" masi.1989@163.com

其实要想随意指定发件人信息,有个最简单的方法,就是在vps服务器本机上用 mail 命令发送邮件,只要安装mailxsendmail即可,可以随意指定发件人信息,要想在java代码中发送的话,可以直接java中调用shell命令来实现。
但这种方式有个限制,就是只能在服务器本地调用mail命令才可以,因为mail命令默认使用的MTA sendmail 不做任何配置的话只能转发(relay)本机localhost发出的邮件,想在自己电脑上跑个发邮件的测试用例就不行了。

mail 命令中增加 -r 参数定义发件人:

echo "测试邮件正文" | mail -s "mail命令测试主题" -r "noreply<noreply@devgou.com>" masi.1989@163.com

收到的邮件如下:


mail命令指定发件人发送的邮件

想在java中调用的话,可以用java中执行shell命令的方式来发邮件,参考:
在Java中调用linux sendmail命令发邮件
https://vosamo.github.io/2016/09/java-shell-mail/


java中使用Apache-Commons-Email发送邮件

Spring中使用 Apache Commons Email 发送邮件,这个组件只是一个邮箱客户端,需要配置SMTP服务器地址和邮箱账号,自己搭建的邮件服务器就配自己的邮件服务器地址,使用163等第三方smtp服务就配第三方的smtp服务器地址和账号。


上一篇 Apache-Commons-Email

下一篇 Linux-Swap交换空间

阅读
评论
954
阅读预计3分钟
创建日期 2019-07-24
修改日期 2019-08-04
类别
标签

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论