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
命令发送邮件,只要安装mailx
和sendmail
即可,可以随意指定发件人信息,要想在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服务器地址和账号。
下一篇 Linux-Swap交换空间
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: