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 Cookie 直接浏览网站分网址
Dec 08 Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 Javascript
jQuery 获取浏览器所在的IP地址的小例子
Nov 08 Javascript
SWFObject基本用法实例分析
Jul 20 Javascript
js判断浏览器是否支持严格模式的方法
Oct 04 Javascript
angular.JS实现网页禁用调试、复制和剪切
Mar 31 Javascript
深入理解 JavaScript 中的 JSON
Apr 06 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
微信小程序 循环及嵌套循环的使用总结
Sep 26 Javascript
vue select二级联动第二级默认选中第一个option值的实例
Jan 10 Javascript
JS实现获取word文档内容并输出显示到html页面示例
Jun 23 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
Apr 10 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 变量未定义等错误的解决方法
2011/01/12 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
php模拟post提交数据的方法
2015/02/12 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
python 矩阵增加一行或一列的实例
2018/04/04 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
阿里旅行:飞猪
2017/01/05 全球购物
企划专员岗位职责
2013/12/09 职场文书
怎样写演讲稿
2014/01/04 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
简爱电影观后感
2015/06/10 职场文书
办公室管理规章制度
2015/08/04 职场文书
中学总务处工作总结
2015/08/12 职场文书
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js