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

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia