邮件服务
邮件服务的用途如下
- 任务分配与跟踪:分配任务、指派工作和跟踪项目进展,比如发送任务清单、工作说明和进度更新,确保团队成员了解其责任和任务要求,并监控工作的完成情况
- 错误报告和故障排除
- 当程序出现错误或异常时,程序员可以通过邮件将错误报告发送给团队成员或相关方,帮助团队了解问题的性质、复现步骤和相关环境,从而更好地进行故障排除和修复
- 邮件中还可以提供详细的错误消息、堆栈跟踪和其他相关信息,以便其他团队成员能够更好地理解问题并提供解决方案
- 自动化构建和持续集成
- 在持续集成和自动化构建过程中,邮件服务可以用于通知团队成员构建状态、单元测试结果和代码覆盖率等信息
- 如果构建失败或出现警告,系统可以自动发送邮件通知相关人员,以便及时采取相应措施
使用
安装库
1 2
| pnpm i js-yaml pnpm i nodemailer
|
一般不会将邮件的密码/授权码明文写进代码,而是存放在环境变量或yaml文件里
mail.yaml:
1 2
| pass: 自己弄授权码去 user: 某某某@某某.com
|
index.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| import http from 'node:http' import fs from 'node:fs' import url from 'node:url'
import nodemailer from 'nodemailer' import yaml from 'js-yaml'
const mailInfo = yaml.load(fs.readFileSync('./mail.yaml', 'utf8'))
const transport = nodemailer.createTransport({ service: 'qq', host: 'smtp.qq.com', port: 465, secure: true, auth: { user: mailInfo.user, pass: mailInfo.pass } })
http.createServer(async (req, res) => { const { pathname } = url.parse(req.url) const { method } = req
if (method === 'POST' && pathname === '/send/mail') {
let data = '' req.on('data', (chunk) => { data += chunk })
req.on('end', () => { const { to, subject, text } = JSON.parse(data) transport.sendMail({ to: to, from: mailInfo.user, subject: subject, text: text, }) res.end('ok') }) } }).listen(11451, () => console.log('Server running at http://localhost:11451'))
|
发送一个请求,就能收到了