开发者社区> 巽秋> 正文

基于nodemailer使用阿里云企业邮箱发送邮件(526错误的解决)

简介: 在虽然日常生活中,QQ,微信等即时聊天工具几乎主导了人们的生活,但是邮件依然是现代生活不可缺少的一部分。这篇文章主要讲述使用node.js 中的nodemail模块操作阿里云的企业邮箱发送邮件 (526错误的解决办法请前往2.
+关注继续查看

在虽然日常生活中,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就过不了验证,是真的坑!!)

 

 1 let transporter = nodemailer.createTransport({
 2             "host": "smtp.mxhichina.com",
 3             "port": 465,
 4             "secure": true, // use SSL
 5             "auth": {
 6                 "user": 登录阿里云企业邮箱的账号(和from的内容一致),
 7                 "pass": 阿里云企业邮箱对应账号的密码         // password
 8             }
 9         });
10         let mailOptions = {
11             from: 发信邮箱(注意发信邮箱要和阿里云企业邮箱的账号一致), 
12             to: 收件人邮箱,
13             subject:邮件主题,
14             text: 邮件内容, 
15         };
16         transporter.sendMail(mailOptions, function(error, info){
17             if(error){
18                 return console.log(error);
19             }
20         });

通过这里的代码就可以发送邮箱了,亲测有效

至于为什么管理员账号不能发信,可能需要特殊的设置或者权限吧(笔者猜测)

有知道为啥的大佬欢迎在评论区给我留言

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
spring-boot 速成(10) -【个人邮箱/企业邮箱】发送邮件
发邮件是一个很常见的功能,代码本身并不复杂,有坑的地方主要在于各家邮件厂家的设置,下面以qq个人邮箱以及腾讯企业邮箱为例,讲解如何用spring-boot发送邮件: 一、添加依赖项 compile 'org.
4490 0
Linux SendMail 使用外部SMTP服务发送邮件
这个今天刚好用到,就测试了一下。OK了。。因为,PYTHON模块是可以,但SHELL脚本用SHELL发,还是合拍点。。   http://my.oschina.net/duangr/blog/183162   1.
1307 0
如何将钉钉和企业邮箱结合起来使用
最近在研究一个目前常见的企业办公模式,企业邮箱和钉钉的结合。 企业邮箱已经成为企业在现今互联网时代中不可缺少的通讯工具之一,企业邮箱的地址格式一般为“员工姓名@公司域名”,相对于个人邮箱,企业邮箱能为企业带来更多价值。
6257 0
+关注
巽秋
前端萌新
9
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载