发送邮件

Node.js 发送电子邮件免费看

什么是Nodemailer模块、如何发送电子邮件、同时发送邮件给多个账号、发送HTML文件

2020-04-17侠课岛    基础入门       

后端/Node.js/Node.js简明入门 5     0     789

什么是Nodemailer模块?

Nodemailer 是 Node.js 的一个发送邮件的组件,功能非常强大,普通邮件,传送附件,邮件加密等等都能实现,而且操作也十分方便。
我们可以使用 npm 下载和安装 Nodemailer 模块:

npm install nodemailer

安装好Nodemailer模块后,就可以通过 require 来引入将该模块了:

var nodemailer = require('nodemailer');

如何发送电子邮件

我们使用 qq邮箱发送电子邮件来举例,首先当然是引入模块:

var nodemailer = require('nodemailer');

接着创建发送邮件的请求对象:

var transporter = nodemailer.createTransport({
  host: 'smtp.qq.com',
  secureConnection:true,
  port:587,
  secure:false,
  auth: {
    user: '3348725856@qq.com',
    pass: 'xxxxxxxx'  //QQ邮箱的授权码
  }
});

其中host 是发送端邮箱类型,例如QQ邮箱是smtp.qq.com,而163邮箱是smtp.163.comport 是端口号,user 是我们自己的邮箱地址。这里注意哟,pass不是邮箱的密码,而是QQ邮箱的授权码(smtp验证码),我们需要在邮箱中开启smtp验证,就可以获取到这个验证码了。

这里讲一下如何获取验证码,因为我们是要实现自动发送邮件,那我们就需要在邮箱中开启一项支持我们自动发邮件的服务,同时获取一个代表我们已经开启这项服务的验证码,也就是stmp验证码。

首先在邮箱中找到设置选项,然后点击设置:

然后我们点击账户,往下面滑,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”选项:

在开始服务中,点击第一个选项的开启按钮:

然后使用保密手机发送短信到指定号码,并点击我已发送按钮:

然后我们就可以成功得到所需验证码,一定要记住这个验证码,因为点击确定按钮后,就看不到了:

然后我们配置要发送的邮件信息:


var mailOptions = { 
  from: '3348725856@qq.com',  // 发件人邮箱地址
  to: '111111111@qq.com',     // 收件人邮箱地址
  subject: '邀请函',      // 邮件标题
  text: '欢迎来到侠课岛!'  // 邮件内容
  //发送附件可以使用attachments
};

from是发件人邮箱地址,to 是收件人邮箱地址,subject 是邮件标题,text 是邮件内容。

然后就可以开始发送邮件了,我们可以使用 sendMail 方法,这个方法中有一个回调函数(callback),接受两个参数error和info:

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    console.log(error);
  } else {
    console.log('电子邮件发送: ' + info.response);
  }
});

完整代码如下所示:

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
  host: 'smtp.qq.com',
  secureConnection:true,
  port:587,
  secure:false,
  auth: {
    user: '3348725856@qq.com',
    pass: 'xxxxxxxx'  //QQ邮箱的授权码
  }
});

var mailOptions = {
  from: '3348725856@qq.com',
  to: '111111111@qq.com',
  subject: '邀请函',
  text: '欢迎来到侠课岛!'
  //发送附件可以使用attachments
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    console.log(error);
  } else {
    console.log('电子邮件发送: ' + info.response);
  }
});

启动nodemailer.js文件,邮件就能成功发送:

>node nodemailer.js
电子邮件发送:250 OK:queued as

同时发送邮件给多个账号

要将QQ邮件发送给多个收件人其实很简单,只需要将邮箱账号依次添加到 mailOptions 对象中的“to”属性,然后用逗号分开。
如下所示:

var mailOptions = {
  from: '3348725856@qq.com',
  to: '111111111@qq.com,222222222@qq.com,333333333@qq.com',
  subject: '邀请函',
  text: '欢迎来到侠课岛!'
  //发送附件
  attachments:[{
        filename:'xkd.txt',
        path:'./xkd.txt'
    },
    {
        filename:'content',
        content:'xxxxxxxx'
    }
    ]
};

发送HTML文件

如果我们想要在QQ邮件中发送HTML格式的文本,可以使用 html 属性代替 text 属性。 例如:

var mailOptions = {
  from: '123456789@qq.com',
  to: '111111111@qq.com',
  subject: '邀请函',
  html: '<h1>欢迎来到侠课岛</h1><p>侠课岛是优秀的互联网工作技能在线学习网站</p>'
}

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

5

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录


本文索引


|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?