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

相关文章

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置