AI摘要
Typecho 评论邮件通知插件,支持通过 SMTP 自动发送通知。纯 PHP 实现,兼容 Windows,支持多种加密方式。支持自定义模板,发信失败不影响评论,可排除博主评论或仅通知待审核评论。
CommentNotifier 评论邮件通知
适用于 Typecho 1.2 / 1.3 的评论邮件通知插件。当博客收到新评论时,自动通过 SMTP 发送邮件通知博主。
功能特性
- 收到新评论即发送邮件通知博主
- 纯 PHP socket 实现 SMTP 协议,不依赖第三方库,Windows 服务器也可用
- 支持 SSL(465)、STARTTLS(587)、不加密(25)三种连接方式
- 支持多收件人
- 自动排除博主自己的评论(登录用户 / 邮箱匹配)
- 可选「仅待审核评论才通知」
- 可自定义邮件标题与 HTML 正文模板
- 邮件标题/正文均做 UTF-8 编码,中文无乱码
- 发信失败不影响评论正常提交
安装
将整个
CommentNotifier目录上传到 Typecho 根目录的usr/plugins/下,即目录结构为:usr/plugins/CommentNotifier/Plugin.php- 进入 Typecho 后台 →「控制台」→「插件」。
- 找到「CommentNotifier」点击「启用」。
- 点击「设置」填写 SMTP 信息。
配置说明
| 配置项 | 说明 |
|---|---|
| SMTP 服务器地址 | 如smtp.qq.com、smtp.163.com、smtp.gmail.com |
| SMTP 端口 | SSL 用 465,STARTTLS 用 587,不加密用 25 |
| 加密方式 | 推荐 SSL |
| SMTP 用户名 | 完整发件邮箱地址 |
| SMTP 密码/授权码 | QQ/163/126 等邮箱填授权码,非登录密码 |
| 发件人名称 | 留空则使用博客标题 |
| 收件人邮箱 | 博主邮箱,每行一个,支持多个 |
| 排除博主自己的评论 | 开启后博主发评论不通知 |
| 通知范围 | 全部评论 / 仅待审核评论 |
| 邮件标题模板 | 支持变量占位符 |
| 邮件正文模板 | HTML,支持变量占位符 |
常见邮箱授权码获取
- QQ 邮箱:设置 → 账户 → 开启「IMAP/SMTP 服务」→ 生成授权码
- 163 邮箱:设置 → POP3/SMTP/IMAP → 开启「SMTP 服务」→ 设置授权码
- Gmail:需开启两步验证后生成「应用专用密码」
模板变量
在标题和正文模板中可使用以下占位符:
| 变量 | 含义 |
|---|---|
{blogName} | 博客名称 |
{title} | 被评论的文章标题 |
{author} | 评论者昵称 |
{mail} | 评论者邮箱 |
{url} | 评论者网址 |
{ip} | 评论者 IP |
{text} | 评论内容 |
{time} | 评论时间 |
{status} | 评论状态(已通过/待审核) |
{permalink} | 评论链接(含锚点) |
{postLink} | 文章链接 |
测试方法
- 完成配置并保存。
- 用另一个浏览器(或无痕窗口,确保未登录博主账号)访问博客任意文章,发表一条评论。
- 检查收件人邮箱是否收到通知邮件(注意查看垃圾邮件箱)。
排查
- 收不到邮件:确认授权码正确、端口与加密方式匹配;检查服务器是否放行对应端口出站;查看邮箱垃圾箱。
- 评论提交报错:本插件发信失败已被捕获,不会影响评论。若仍报错,请先禁用插件确认是否为本插件引起。
- 超时:服务器到 SMTP 服务器的网络可能不通,可在服务器上执行
telnet smtp.qq.com 465测试连通性。
技术实现
插件通过 Typecho_Plugin::factory('Widget\Feedback')->finishComment 钩子挂载到 Typecho 评论完成事件。评论入库后、页面跳转前触发回调,从 Widget\Feedback 实例读取评论数据,经 SMTP 协议发送邮件。所有发信逻辑包裹在 try-catch 中,确保异常不会阻断评论流程。


