在之前的教程中我们已经成功使用 curl 来发送邮件 以通知stun穿透端口的变化 「LUCKY STUN穿透」使用邮件通知端口变化情况
不过使用 curl 发送邮件在配置上是较为麻烦的 需要编写脚本并传递参数 在不同平台上脚本的语法也不同 还需要防止授权码中存在特殊字符影响脚本运行 调试和维护较为不便
其实lucky v2.13.7 中(2024-11-17) 就已经在web服务内添加了 邮件服务功能 可以通过发送 HTTP POST 请求来实现邮件的发送 由邮件服务处理 SMTP 相关的过程
这也意味着我们不再需要通过脚本来操作 curl 直接使用 stun 规则中的 webhook 功能即可完成请求 极大的简化了设置 便于调试消除了不同平台上的设置差异
我们可以复用之前的web规则 即作为已有web规则的子规则 但若是添加子规则 则需要为其设置本地域名 即在host文件中添加 一个不存在的域名/主机名
并指定到本地IP 以便在访问的时候实现分流 这样设置较为麻烦 有些平台上修改host文件并不方便 再考虑到其服务类型的特殊性
这里建议直接新建一个主规则 使用单独的端口并设置其为默认规则 这样直接使用IP加端口就可以进行访问

设置规则名称和监听端口

编辑默认规则 设置类型为 邮件服务

填写邮箱配置 获取邮箱授权码的方法 详见之前的教程 「LUCKY STUN穿透」使用邮件通知端口变化情况

按下发送邮件按钮 若设置都正确 应该可以收到邮件

此处测试完成后 可以右侧可以看到对应的 JSON 配置 复制下来方便之后 在webhook中进行调用

编辑 stun穿透规则 打开webhook开关
地址填写 之前设置的邮件服务器的地址
请求方式选择 POST
请求头填写 content-type: application/json; charset=utf-8
请求体填写之前 复制出来的JSON
接口调用成功包含的字符串 填写 success
示例

可将请求体中 邮件的标题和内容替换成 stun穿透规则的局部变量 可用局部变量在悬浮提示中查看

示例
{
"SMTPHost": "smtp.126.com",
"SMTPPort": "465",
"SenderEmail": "XXXXXX@126.com",
"SenderPassword": "XXXXXXXXXXXXXXX",
"RecipientEmail": "XXXXXX@126.com",
"EmailSubject": "穿透规则 #{ruleName} 发生变化",
"EmailBody": "{ipAddr}",
"SenderName": "ie12",
"ContentType": "text/plain",
"AsyncSend": false,
"RetryCountOnFailure": 0,
"RetryInterval": 1000
}
按下测试按钮 webhook手动触发测试按钮 若配置正确应能收到测试邮件

至此我们便完成了 lucky 邮件服务发送电子邮件的设置
https://lucky666.cn/docs/modules/web#%E9%82%AE%E4%BB%B6%E5%8F%91%E9%80%81