博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
阅读量:7231 次
发布时间:2019-06-29

本文共 1739 字,大约阅读时间需要 5 分钟。

个人博客原文:

nodemailer 简介

是 Node.js 应用程序的一个模块,可以方便地发送电子邮件。

该项目于 2010 年开始,至今已经相当稳定,这也是如今大多数 Node.js 用户默认情况下发送邮件的解决方案。

使用

# 初始化 pageage.json 文件$ npm init# 安装依赖$ npm install nodemailer --save# 运行node app.js

app.js

const nodemailer = require('nodemailer');// 开启一个 SMTP 连接池let transporter = nodemailer.createTransport({    host: 'smtp.qq.com',    secureConnection: true, // use SSL    port: 465,    secure: true, // secure:true for port 465, secure:false for port 587    auth: {        user: '80583600@qq.com',        pass: 'xxx' // QQ邮箱需要使用授权码    }});// 设置邮件内容(谁发送什么给谁)let mailOptions = {    from: '"白小明 ?" <80583600@qq.com>', // 发件人    to: 'xx1@qq.com, xx2@qq.com', // 收件人    subject: 'Hello ✔', // 主题    text: '这是一封来自 Node.js 的测试邮件', // plain text body    html: '这是一封来自 Node.js 的测试邮件', // html body    // 下面是发送附件,不需要就注释掉    attachments: [{            filename: 'test.md',            path: './test.md'        },        {            filename: 'content',            content: '发送内容'        }    ]};// 使用先前创建的传输器的 sendMail 方法传递消息对象transporter.sendMail(mailOptions, (error, info) => {    if (error) {        return console.log(error);    }    console.log(`Message: ${info.messageId}`);    console.log(`sent: ${info.response}`);});

效果预览

踩坑细节

实践的时候遇到许多问题,现在列举如下,若未详尽,敬请留言交流。

POP3/SMTP服务、获取授权码(以QQ为例)

首先需要开启邮箱的 POP3/SMTP 服务。

QQ邮箱需要使用授权码,而不是QQ密码;163 邮箱直接使用163邮箱密码就行。

进入QQ邮箱,设置-账户-开启服务 POP3/SMTP 服务,并生成授权码,现在获取授权码需要验证手机短信。

支持邮箱

理论上支持所有主流邮箱,但我只测试了 QQ 和 163,都成功了。若其他邮箱出问题请留言交流。

535 错误

Error: Invalid login: 535 Error: authentication failed

认证失败:

  • 可能是账号密码错误

  • 链接资源池时加 ssl:secureConnection: true,

  • QQ 的 host 是 smtp.qq.com;163 的 host 是 smtp.163.com

553 错误

Error: Mail command failed: 553 Mail from must equal authorized user

发件人和认证的邮箱地址不一致

  • auth.user 需要与 from 中的邮箱一致

转载地址:http://yfcfm.baihongyu.com/

你可能感兴趣的文章
Linux-sendmail
查看>>
关于BSTR的困惑
查看>>
什么时候使用HashMap?它有什么特点?
查看>>
框架名
查看>>
编译安装PHP
查看>>
插入透明背景Flash的HTML代码
查看>>
无标题
查看>>
我的友情链接
查看>>
Web前端入门学习(3)——CSS选择器
查看>>
DNS的搭建
查看>>
Apache/Nginx 访问日志分析脚本
查看>>
Curator的使用
查看>>
第五章 集合类型
查看>>
我的友情链接
查看>>
nagios监控服务出现FLAPPING状态时无法发出邮件报警信息
查看>>
数据库链接字符串方法
查看>>
The DCI Architecture: A New Vision of Object-Oriented Programming(一篇具有里程碑式意义的论文)...
查看>>
RIP路由配置实例V2
查看>>
Bytescout Spreadsheet SDK for.NET
查看>>
我的友情链接
查看>>