Node.js使用NodeMailer发送邮件实例代码


Posted in Javascript onMarch 06, 2017

0.目标

这一节,我将实现一个简单的发送邮件功能。

1.部署

1.1 部署Express

如果不知道如何部署,可参照:部署Express

1.2 准备一个邮箱并开始SMTP服务

为了实现这个功能,你首先要有一个邮箱;由于需要使用SMTP方式发送,你还需要开启相关功能。你可以登录你的邮箱,然后开启这个设置,以新浪邮箱和QQ邮箱为例:

Node.js使用NodeMailer发送邮件实例代码

Node.js使用NodeMailer发送邮件实例代码

2.服务器端

2.1 使用nodemailer

这里要用到nodemailer,需要自行安装:

npm install nodemailer --save

在routes/index.js中引用nodemailer:

var multer = require('nodemailer');

2.2 配置

在routes/index.js中创建一个传输方式:

var mailTransport = nodemailer.createTransport({
  host : 'smtp.sina.com',
  secureConnection: true, // 使用SSL方式(安全方式,防止被窃取信息)
  auth : {
    user : '你的邮箱地址',
    pass : '你的邮箱密码'
  },
});

注意,低版本的nodemailer可能需要多传入一个参数“SMTP”:

var mailTransport = nodemailer.createTransport('SMTP', {
  host : 'smtp.sina.com',
  secureConnection: true, // use SSL
  auth : {
    user : '你的邮箱地址',
    pass : '你的邮箱密码'
  },
});

2.3 发送邮件

/* 浏览器输入地址(如127.0.0.1:3000/sned)后即发送 */
router.get('/send', function(req, res, next) {
  var options = {
    from      : '"你的名字" <你的邮箱地址>',
    to       : '"用户1" <邮箱地址1>, "用户2" <邮箱地址2>',
    // cc     : ''  //抄送
    // bcc     : ''  //密送
    subject    : '一封来自Node Mailer的邮件',
    text      : '一封来自Node Mailer的邮件',
    html      : '<h1>你好,这是一封来自NodeMailer的邮件!</h1><p><img src="cid:00000001"/></p>',
    attachments  : 
          [
            {
              filename: 'img1.png',      // 改成你的附件名
              path: 'public/images/img1.png', // 改成你的附件路径
              cid : '00000001'         // cid可被邮件使用
            },
            {
              filename: 'img2.png',      // 改成你的附件名
              path: 'public/images/img2.png', // 改成你的附件路径
              cid : '00000002'         // cid可被邮件使用
            },
          ]
  };

  mailTransport.sendMail(options, function(err, msg){
    if(err){
      console.log(err);
      res.render('index', { title: err });
    }
    else {
      console.log(msg);
      res.render('index', { title: "已接收:"+msg.accepted});
    }
  });
});

如果你要发送附件,则先把要发送的文件放入工程中,并修改上面代码的附件的filename和path。

从代码中可以知道,要在邮件正文中添加图片,可以设置图片的cid,然后在img标签的src中设置为对应的cid即可。

注意,不建议在js代码中直接嵌入HTML代码,也不建议把图片加到邮件正文中。

3.测试

浏览器输入地址(如127.0.0.1:3000/sned)。

发送等待的时间视附件大小及网络带宽等因素不同,如果有一个很大的附件要发送,可能会等待很长时间;所以,建议在测试的时候使用小文件。

如果发送成功,会给出提示:

Node.js使用NodeMailer发送邮件实例代码

并在邮箱里收到相应的邮件:

Node.js使用NodeMailer发送邮件实例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
利用BootStrap弹出二级对话框的简单实现方法
Sep 21 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 Javascript
解析Javascript单例模式概念与实例
Dec 05 Javascript
ajax图片上传,图片异步上传,更新实例
Dec 30 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
Apr 13 Javascript
js评分组件使用详解
Jun 06 Javascript
Angular4学习笔记之实现绑定和分包
Aug 01 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
React+Redux实现简单的待办事项列表ToDoList
Sep 29 Javascript
JS实现长图上下滚动效果
Mar 19 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 #Javascript
js实现4个方向滚动的球
Mar 06 #Javascript
Bootstrap输入框组件简单实现代码
Mar 06 #Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 #Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 #Javascript
Bootstrap表单简单实现代码
Mar 06 #Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
Mar 06 #Javascript
You might like
php 设计模式之 工厂模式
2008/12/19 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
Python字符串详细介绍
2015/05/09 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
Python使用configparser库读取配置文件
2020/02/22 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
C面试题
2015/10/08 面试题
物流司机岗位职责
2013/12/28 职场文书
面试后的英文感谢信
2014/02/01 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
环境卫生标语
2015/08/03 职场文书
培训后的感想
2015/08/07 职场文书
毕业设计工作总结
2015/08/14 职场文书