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 相关文章推荐
JavaScript DOM学习第八章 表单错误提示
Feb 19 Javascript
基于jQuery的左右滚动实现代码
Dec 03 Javascript
javascript Window及document对象详细整理
Jan 12 Javascript
jQuery中 noConflict() 方法使用
Apr 25 Javascript
JS实现程序暂停与继续功能代码解读
Oct 10 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
JavaScript字符串删除重复字符的方法
Dec 25 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
Jul 10 Javascript
js返回顶部实例分享
Dec 21 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
微信小程序实现运动步数排行功能(可删除)
Jul 05 Javascript
vue实现图片上传预览功能
Dec 23 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统计字符串中中英文字符的个数
2013/06/23 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
浅谈PHP的反射机制
2016/12/15 PHP
php无限极分类实现方法分析
2019/07/04 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
心得体会怎么写
2013/12/30 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python