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入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
js innerHTML 改变div内容的方法
Aug 03 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
Jan 28 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
angular ngClick阻止冒泡使用默认行为的方法
Nov 03 Javascript
jQuery中animate的几种用法与注意事项
Dec 12 Javascript
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
js监听html页面的上下滚动事件方法
Sep 11 Javascript
react-router 路由切换动画的实现示例
Dec 03 Javascript
jQuery实现简单评论区功能
Oct 26 jQuery
k8s node节点重新加入master集群的实现
Feb 22 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配置文件中最常用四个ini函数
2007/03/19 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
jQuery示例收集
2010/11/05 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
js转html实体的方法
2016/09/27 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
pygame学习笔记(5):游戏精灵
2015/04/15 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
优秀经理事迹材料
2014/02/01 职场文书
中学生运动会入场词
2014/02/12 职场文书
致共产党员倡议书
2014/04/16 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
个人求职自荐信范文
2014/06/20 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
一文搞懂Java中的注解和反射
2022/06/21 Java/Android