服务端之Node的QQ邮件发送功能、授权码申请流程、邮箱、createTransport、sendMail

本文主要是介绍服务端之Node的QQ邮件发送功能、授权码申请流程、邮箱、createTransport、sendMail,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MENU

  • 前言
  • 邮箱授权码的申请流程
  • Node
  • 连续发送邮件失败的原因


前言

1、代码段的主要功能是通过nodemailer模块从一个QQ邮箱发送电子邮件。
2、代码段实现从QQ邮箱1283077926@qq.com发送一封邮件到2506562048@qq.com,邮件主题为“微信公众号推广”,正文为“亲爱的2506562048,您好!邀请您关注"智码帮"微信公众号。”。
3、在使用此代码时,注意要将授权码pass替换为实际的授权码,并确保发送者邮箱的SMTP服务已开启。


邮箱授权码的申请流程

第一步
QQ邮箱
打开网页版QQ邮箱


第二步
使用对应QQ号扫码登录邮箱


第三步
账号与安全
点击账号与安全


第四步
安全设置
点击安全设置


第五步
生成授权码
点击生成授权码


第六步
微信扫描二维码,可快速发送短信
账号验证


第七步
授权码
至此授权码获取成功。
需要注意第五步,如果是第一次,那么需要加一个绑定的过程,生成授权码的按钮处于不可点击状态。


Node

代码

const nodemailer = require('../../nodeModules/node_modules/nodemailer');
const user = '1283077926@qq.com';init();function init() {// 创建一个邮件传输器const transmitter = nodemailer.createTransport({service: 'qq',auth: {// 发送者的QQ邮箱user,// QQ邮箱的授权码,不是QQ邮箱登录密码pass: 'xpqrsnnlgxqugffg'}});// 邮件信息let mailOptions = {// 发送者邮箱from: user,// 接收者邮箱to: `2506562048@qq.com`,// 邮件主题subject: '微信公众号推广',// 邮件内容(纯文本)text: '亲爱的2506562048,您好!邀请您关注"智码帮"微信公众号。'};// 发送邮件transmitter.sendMail(mailOptions, (error, info) => {if (error) {console.log('发送失败: ', error);} else {console.log('发送成功:', info);}});
}

解析

引入nodemailer模块
代码行引入nodemailer模块。nodemailer是一个用于在Node环境中发送邮件的模块。这里使用require函数从指定路径加载模块。


定义发送者邮箱
代码行定义一个常量user,保存发送邮件的QQ邮箱地址。


初始化函数init
代码行调用init函数,开始执行邮件发送的整个流程。


函数init的实现
1、createTransport方法用于创建一个邮件传输器transmitter,它包含邮件的发送方式和授权信息。
2、service: 'qq'指定使用QQ邮箱服务。
3、auth对象包含授权信息。
4、user发送邮件的QQ邮箱地址。
5、passQQ邮箱的授权码,授权码在QQ邮箱的设置中生成,而不是QQ邮箱的登录密码。这个授权码允许第三方应用(如,nodemailer)使用QQ邮箱来发送邮件。


mailOptions定义邮件信息
1、定义邮件的具体信息。
2、from邮件发送者的邮箱地址。
3、to收件人的邮箱地址,这里设置为2506562048@qq.com
4、subject邮件的主题,设为"微信公众号推广"。
5、text邮件的正文内容,是纯文本格式,内容为"亲爱的2506562048,您好!邀请您关注"智码帮"微信公众号。"


发送邮件
sendMail方法用于发送邮件,它接受两个参数。
mailOptions包含邮件信息的对象。
一个回调函数用于处理发送邮件后的结果。
如果发送失败,会打印出错误信息error。
如果发送成功,会打印出发送成功的信息info,其中包含邮件发送的详细信息。


连续发送邮件失败的原因

邮箱服务器限制
邮箱服务器(如,QQ邮箱)通常会对短时间内发送大量邮件的账户进行限制,以防止垃圾邮件。这种限制可能包括发送频率的限制和单日发送邮件数量的限制。


错误处理机制
代码中的错误处理部分可能导致发送失败时重复发送同一个邮件,触发邮箱的反垃圾邮件机制。每次发生错误时,立即再次尝试发送邮件,这可能让服务器认为这是异常行为。


邮箱授权码问题
QQ邮箱的授权码需要正确设置和保持有效。如果发送过程中授权码被更改或失效,后续邮件将无法发送。

这篇关于服务端之Node的QQ邮件发送功能、授权码申请流程、邮箱、createTransport、sendMail的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124569

相关文章

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/