目前的 Solo 版本中已经彻底移除邮件相关功能,以下内容请忽略。
本文是《Solo 从设计到实现》的一个章节,该系列文章将介绍 Solo 这款 Java 博客系统是如何从无到有的,希望大家能通过它对 Solo 从设计到实现有个直观地了解、能为想参与贡献的人介绍清楚项目,也希望能为给
重复发明重新定义博客系统的人做个参考 ❤️
邮件推送评论提醒
邮件推送评论提醒需要配置 mail.props 后才能使用,原理是通过本地 JavaMail 连接邮件服务商 SMTP 进行推送,所以理论上只要你的邮箱支持 SMTP 客户端发送邮件,那么就可以通过配置来使用邮件推送。
推送场景
- 有访客对文章/页面进行评论,这时博客管理员会收到评论提醒邮件
- 有访客对文章/页面上已有评论的进行回复,则已有原评论者会收到回复提醒邮件
- 重置密码
推送前会做一些判断:
- 目标邮件地址格式校验
- 自己评论自己的文章/页面不会推送
- 评论人和回复人是同一个人(邮件地址相同)不会推送
回复提醒模板
回复提醒邮件很多情况下是发送给访客的,比如访客 A 评论后访客 B 回复了 A 的评论,则 A 就会收到回复提醒邮件。所以这个时候回复提醒邮件的样式风格就显得比较重要了,毕竟是发给其他访客的。
可以在 Solo 的后台 - 工具 - 其他 - 回复提醒邮件模板中对该模板进行自定义,配置界面上列举出了可用的变量,可通过变量进行邮件模板定义,这样能让发送的邮件更符合你博客的样式风格。
mail.props 配置
mail.user=
mail.password=
mail.debug=false
mail.smtp.host=smtp.qq.com
mail.smtp.port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
mail.smtp.socketFactory.port=465
mail.smtp.auth=true
mail.smtp.starttls.enable=true
只有同时配置了(不留空)mail.user
、mail.password
、mail.smtp.host
、mail.smtp.port
这几项,才认为启用了邮件推送,具体判断代码可参考方法 Solos#isMailConfigured
。
推送实现
- 对于推送文章、页面评论提醒给管理员,是在
CommentMgmtService#addArticleComment
和CommentMgmtService#addPageComment
中进行的 - 对于推送评论回复提醒邮件是通过事件机制实现的,具体可参考
ArticleCommentReplyNotifier
、PageCommentReplyNotifier
这两个类
在类设计方面,我们提供了一个接口 MailService
,目前只有一个实现类 LocalMailService
,最终通过 MailSender
将消息转 JavaMail 消息格式进行推送。
在实际进行推送时,会对每次推送开一个线程,避免阻塞当前评论请求:
public final class LocalMailService implements MailService {
@Override
public void send(final Message message) {
new Thread(() -> new MailSender().sendMail(message)).start();
}
}
回到全文目录:《Solo 从设计到实现》
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于