基于nodemailer使用阿里云企业邮箱发送邮件(526错误的解决)
在虽然日常生活中,QQ,微信等即时聊天工具几乎主导了人们的生活,但是邮件依然是现代生活不可缺少的一部分。这篇文章主要讲述使用node.js 中的nodemail模块操作阿里云的企业邮箱发送邮件
(526错误的解决办法请前往2.nodemail的红字部分查看)
1.拥有一个阿里云的企业邮箱
首先登录阿里云官网,在右上角可以进入阿里云邮箱

然后就可以进入企业邮箱的登录界面

这里大概讲一下阿里云的企业邮箱的获取方法,笔者是在买ECS服务器的时候阿里云赠送的(已经使用过的请自动忽略)
如果你也有赠送的,但是之前没有使用过的同学
可以在控制台当中的云市场中

在云市场中的域名下面的分类中可以找到企业邮箱板块

在管理中你可以看到你的企业邮箱的相关信息

你可以在这里进入邮箱的登录页面

可以在这里设置邮箱的解析域名
也就是可以将企业邮箱解析到你的域名上
2.nodemailer
准备好阿里云企业邮箱之后,先了解一下我们会用到的API及参数设置
这里就不讲nodemailer的安装了,不会的朋友可以自行百度一下,有许多相关的博客文章写的挺好的
在这里我截了几张官网上的图大概讲解一下Api
这里主要讲一下SMTP服务器
其他的邮件服务器操作与之类似

下面是定义一个Smtp的对象

后面邮件的发送都是通过这个对象来操作
先看一下这个options里面的参数

至于下面的安全传输层协议,我们需要设置的只需要将secure设置为true即可
host参数 阿里云企业邮箱STMP服务器地址为 smtp.mxhichina.com 其他的邮件服务器地址请前往官网查看https://help.aliyun.com/knowledge_detail/36576.html?spm=5176.8071678.877627.duankou.75556b384n2RqH
这里我还是贴一张图

这里的加密端口也就是我们将secure参数设置为true后所使用的端口
然后在auth参数中一般使用user、pass两个参数
user指的是邮箱的登录账号
pass是邮箱账号的登录密码(QQ邮箱等一些邮箱需要使用授权码的方式登录,授权码是个坑望诸君谨慎行事)
这里插播一段526错误的解决办法,当时这个身份验证的错误卡了笔者很久,故花一些文字记录一下
526错误是身份验证错误,官网上的说法是服务器地址不对、用户名错误、或者用户名与密码不匹配
在查询一些博客后,526报错仍未解决(此处解决情况可能为个例,也许不具备普遍性,希望大家能少踩坑)
我这里的解决办法是用阿里云企业邮箱的管理员账户,创建一个子账户,使用这个子账户进行网站的发信
(再说一个坑的地方就是阿里云的子账户分配后需要修改子账户的密码,他有一个提示说不能使用域名作为密码,这里只要密码中包含了域名比如www.taobao.com 的域名只要你密码中有taobao就过不了验证,是真的坑!!)
let transporter = nodemailer.createTransport({
"host": "smtp.mxhichina.com",
"port": 465,
"secure": true, // use SSL
"auth": {
"user": 登录阿里云企业邮箱的账号(和from的内容一致),
"pass": 阿里云企业邮箱对应账号的密码 // password
}
});
let mailOptions = {
from: 发信邮箱(注意发信邮箱要和阿里云企业邮箱的账号一致),
to: 收件人邮箱,
subject:邮件主题,
text: 邮件内容,
};
transporter.sendMail(mailOptions, function(error, info){
if(error){
return console.log(error);
}
});
通过这里的代码就可以发送邮箱了,亲测有效
至于为什么管理员账号不能发信,可能需要特殊的设置或者权限吧(笔者猜测)
有知道为啥的大佬欢迎在评论区给我留言
基于nodemailer使用阿里云企业邮箱发送邮件(526错误的解决)的更多相关文章
- NodeJS下的阿里云企业邮箱邮件发送问题
还没有到11点,再顺带发一个上次碰到NodeJS的邮箱插件nodeMailer不支持阿里云邮件问题. 网上很多资料都默认使用QQ之类的邮箱,因为nodeMailer默认添加了QQ之类的SMTP地址,但 ...
- 在Foxmail中添加阿里云企业邮箱账号
1.安装完成Foxmail之后,新建账号 输入阿里云邮箱地址和密码,点击创建 接受服务器类型你可以选择POP3或者IMAP,在这里我选择的是POP3 点击创建,大功告成. 为什么要写这篇文章呢? 因为 ...
- 记一次邮件推送的坑,c#基于smtp使用腾讯企业邮箱发送邮件总是失败的原因
今天在弄企业邮箱推送的东西,原版代码是这样的 public void SendEmail(string title, string content) { try { MailMessage mailM ...
- 阿里云场景化阿里云企业数字化转型售前方法PSA
阿里云场景化阿里云企业数字化转型售前方法PSA 目录 01 课程收获 理解企业数字化转型的概念.内涵.本质 了解企业数字化转型的要点.目标和切入点 掌握数字化转型项目售前阶段实践方法 场景化方案 阿里 ...
- Java实现网易企业邮箱发送邮件
最近项目需要用网易企业邮箱发送邮件,特意来将实现过程记录一下: maven导入jar包 <!-- javax.mai 核心包 --> <dependency> <grou ...
- Python qq企业邮箱发送邮件
Python qq企业邮箱发送邮件 进入客户端设置: 下面是代码部分: from email.header import Header from email.mime.text import MIME ...
- Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决
前言 今天, 博主将写了好久的一个Django小项目尝试在阿里云部署上线,由于项目中需要发送邮件,博主调用了163邮箱接口,在本地测试邮件功能正常,可是上线后,邮件功能一直超时崩溃.在百度一番查资料后 ...
- 基于Apache的阿里云部署Node.js服务器(Windows环境)
1 前言 由于nodejs项目对方开放了多个端口,而且阿里云上的Apache服务器(windows)已经挂载了网站,此时需要把此项目也挂上去,网上查询资料,方法略少,基本是基于nginx版本的. 2 ...
- Apache Commons Email 使用网易企业邮箱发送邮件
最近使用HtmlEmail 发送邮件,使用网易企业邮箱,发送邮件,死活发不出去!原以为是网易企业邮箱,不支持发送邮箱,后面经过研究发现,是apache htmlEmail 的协议导致,apache E ...
随机推荐
- 'BAPI_MESSAGE_GETDETAIL' 用法
其中message class是在se91里创建的 call function 'BAPI_MESSAGE_GETDETAIL' exporting id = msg_class “m ...
- 使用SignalR进行实时通信
http://www.cnblogs.com/lonelyxmas/tag/%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E5%AD%A6%E4%B9%A0SignalR% ...
- P2024 食物链
题面:P2024 食物链 emmm其实不太难想 开三倍的数组 1~n:是当前动物的同类 n~2*n:是当前动物吃的动物 2*n~3*n:是吃当前动物的动物 emmmm #include<iost ...
- java学习(三)
学号 20189214 <Java程序设计>第三周学习总结 教材学习内容总结 核心类 java.lang.Object 所有的类都直接派生自这个类. java.lang.String St ...
- nsq 初试
nsqlookupd tcp 4160 http 4161nsqd 4150nsqadmin 4171 1:安装$ brew install nsq1) 停止nsq默认的启动$ brew servic ...
- Java和C++的数组比较
Java:数组的定义:如下两种方式都可以:int array[];int[] array; 注意:数组在定义后,不能直接使用.必须在初始化后才能使用.初始化有两种方式:1.静态初始化:int arra ...
- python基础入门之对文件的操作
**python**文件的操作1.打开文件 打开文件:open(file,mode='r') file:操作文件的路径加文件名 #绝对路径:从根目录开始的 #相对路径:从某个路径开始 mode:操作文 ...
- 口试Linq题
LINQ to SQL与IQueryable 理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列. LINQ to Object和LINQ to SQL有何区别 ...
- php发送http put/patch/delete请求Demo
CURL请求对于PHPer是必备技能,使用curl_opt函数来发送各式各样的http请求动作,不仅限于get和post.在测试自己的restful api的时候,通过访问这个代理发送http put ...
- IE9及以下input无背景时,层级混乱问题
IE9及以下版本:input输入框 background:none;时,层级比input的低的元素会显示在input之上,导致input点击不了. 解决方案: background:url(" ...