服务端之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

相关文章

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构