使用 Node.js 快速验证服务功能
相比较使用客户端,我更喜欢使用代码来做快速验证。
这里为了方便描述,我使用 Node.js
写了一个非常简单的发信脚本:
'use strict'
const nodemailer = require('nodemailer')
async function main () {
const { user, pass } = await nodemailer.createTestAccount()
let transporter = nodemailer.createTransport({
host: '0.0.0.0',
port: 1025,
auth: { type: 'login', user, pass }
})
// send mail with defined transport object
let info = await transporter.sendMail({
from: '\'Fred Foo \' ', // sender address
to: '[email protected], [email protected]', // list of receivers
subject: 'Hello ✔', // Subject line
text: 'Hello world?', // plain text body
html: 'Hello world?' // html body
})
console.log('Message sent: %s', info.messageId)
// Message sent:
// Preview only available when sending through an Ethereal account
console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info))
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}
main().catch(console.error)
将上面的代码保存为 example-sendmail.js
,接着执行 node example-sendmail.js
,顺利的话,我们将看到类似下面的日志输出:
接着,在浏览器中打开 http://0.0.0.0:1080,我们将看到 MailDev 的界面中多了一份意料之中的“邮件”,邮件正文正是我们上面写代码中的内容。
收到来信的 MailDev
在不进行额外的代码调整之前,我们多重复几次上面的发信操作,就可以模拟出日常学习和工作中各种应用的邮件通知发送场景。
此时,MailDev 的列表中就会实时展示新到的“邮件”了。
MailDev 的邮件列表
使用 Docker-Compose
启动服务
为了方便我的老读者们,让大家能够一起偷懒,按照惯例,我提供一个简单的容器编排配置文件:
version: '3'
services:
maildev:
image: soulteary/maildev
restart: always
environment:
- TZ=Asia/Shanghai
- MAILDEV_WEB_PORT=1080
- MAILDEV_SMTP_PORT=1025
ports:
- "1080:1080"
- "1025:1025"
将上面的内容保存为 docker-compose.yml
,接着使用 docker-compose up -d
启动应用,和上文提到的一样,我们就能够在浏览器中访问 http://localhost:1080 来浏览和管理“邮件内容”,并通过 1025 端口来进行邮件汇聚操作啦。
最后:
和之前提到过的其他的项目一样,接下来我将持续改进这个项目。短时间内,我希望它能够更好的支持 WebHook
、并和一些消息推送软件进行打通,更好的支持我的 HomeLab
场景。
--EOF