使用Node.js还可以发邮件?

Jacquelyn38
• 阅读 1247

前言

今天,我们给大家开发一个小效果。篇幅比较短,主要给大家展示效果。

实战

  1. 首先我们初始化一个Node项目

    npm init -y  
    
  2. 创建一个app.js文件

    'use strict';  
    
    const nodemailer = require('nodemailer');  
    
    let transporter = nodemailer.createTransport({  
      // host: 'smtp.ethereal.email',  
      service: 'qq', // 使用了内置传输发送邮件 查看支持列表:https://nodemailer.com/smtp/well-known/  
      port: 465, // SMTP 端口  
      secureConnection: true, // 使用了 SSL  
      auth: {  
        user: 'xxx@qq.com', // 这里以QQ邮箱为例  
        pass: 'kzudmlwerknibejc', // 设置的smtp授权码  
      }  
    });  
    
    let mailOptions = {  
      from: '"xxx" <xxx@qq.com>', // sender  
      to: 'xxx@163.com', // receivers  
      subject: 'Hello', // Subject line  
      // 发送text或者html格式  
      // text: 'Hello world?', // plain text body  
      html: '<b>Hello world?</b>' // html body  
    };  
    
    // send mail with defined transport object  
    transporter.sendMail(mailOptions, (error, info) => {  
      if (error) {  
        return console.log(error);  
      }  
      console.log('Message sent: %s', info.messageId);  
      // Message sent: <04ec7731-cc68-1ef6-303c-61b0f796b78f@qq.com>  
    });  
    

    Nodemailer是一个简单易用的Node.js邮件发送组件。

    官网地址:https://nodemailer.com

    GitHub地址:https://github.com/nodemailer/nodemailer

    Nodemailer的主要特点包括:

  • 支持Unicode编码

  • 支持Window系统环境

  • 支持HTML内容和普通文本内容

  • 支持附件(传送大附件)

  • 支持HTML内容中嵌入图片

  • 支持SSL/STARTTLS安全的邮件发送

  • 支持内置的transport方法和其他插件实现的transport方法

  • 支持自定义插件处理消息

  • 支持XOAUTH2登录验证

  1. 获取smtp授权码

    登录QQ邮箱,点击邮箱设置。

    使用Node.js还可以发邮件?

找到如下图红框所示,开启IMAP/SMTP服务后,就可以随机获取授权码了。

使用Node.js还可以发邮件?

  1. 启动项目

    node app.js  
    

使用Node.js还可以发邮件?

优化

可以使用node-schedule来创建定时任务,单位时间段可以执行代码发送邮件。

npm install node-schedule  

结语

谢谢阅读,希望没有浪费你的时间。

本文转转自微信公众号** 前端历劫之路**原创https://mp.weixin.qq.com/s/6OZAaxSH2L6u0DpCoFSWlw,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
2年前
一篇文章教会你使用JS+CSS实现一个简单加载进度条的效果
大家好,我是前端进阶者,今天给大家来做个小项目,一起来看看吧一、前言我们经常在网页上,游戏界面加载时会看到加载进度条的效果,我们往往会以为这些加载进度条的效果,很难实现。今天教大家JSCSS结合做简单一个加载进度条的效果。二、项目准备软件:HBuilderX。三、项目实现1\.body创建2个div,外部div添加id"progress"属
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Souleigh ✨ Souleigh ✨
2年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
2年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这