引言:基于第三方Nodemailer可以实现使用云函数来发送邮件。在开发过程中使用发送邮件,一般使用场景是用来用户注册账号,更改密码等其它验证。

1.开发准备

1.1邮箱

已注册成功的QQ邮箱、网易邮箱等;

1.2Nodemailer功能

  • 零依赖性的单个模块–由于没有死角,因此代码易于审核
  • 高度重视安全性,没有人喜欢RCE漏洞
  • Unicode支持使用任何字符,包括表情符号
  • Windows支持 –您可以使用安装npm在Windows上,与其他模块一样,没有编译的依赖项。从Azure或Windows盒子免费使用它
  • 使用HTML内容以及纯文本替代
  • 附件 到消息
  • 嵌入式的 HTML内容的图像附件–您的设计不会被阻塞
  • 使用TLS / STARTTLS的安全电子邮件传递
  • 不同 运输方式 除了内置 SMTP支持
  • 与签署消息 DKIM
  • 自订 插件支持 用于处理消息
  • OAuth2 认证方式
  • 代理人 用于SMTP连接
  • ES6代码 –由于var的提升,不再有意外的内存泄漏
  • 自动生成来自的电子邮件测试帐户电子邮件

Nodemailer技术文档:https://nodemailer.com/about/

2.开启SMTP服务,获取邮箱授权码

授权码在发送邮件时需要使用,以下为QQ邮箱和网易邮箱获取授权码的详细步骤,授权码的具体使用会在代码模块详细介绍;

2.1获取QQ邮箱授权码

登录QQ邮箱网页版,按照以下步骤获取授权码:

1.在首页找到设置

2.选择账户

3.在账户页面向下滚动找到此选项,点击开启服务

4.在弹出页面,按照步骤发送信息

5.发送成功后即可获得授权码:xxxxxxxxxxxxxx

2.2.获取网易邮箱授权码

登录网易邮箱网页版,按照以下步骤获取授权码:

1.在首页找到设置,在下拉框选择POP3/SMTP/IMAP

2.在此页面点击开启

3.在弹出页面,按照步骤发送信息

4.发送成功后即可获得授权码:xxxxxxxxxxxxxxx

3.使用小程序云函数发送邮件

3.1配置依赖

在微信开发者工具中,新建一个云函数sendEmail,在云函数的package.json配置nodemailer最新版本的依赖,并右键云函数目录选择在终端中打开输入命令npm install安装依赖

"dependencies": { "nodemailer": "latest" }

3.2编写代码

以网易邮箱为例,在index.js里编写以下代码,在开发使用过程中根据自己的情况更改参数即可,如:

  • @parameter host:SMTP服务器地址;
  • @parameter port:端口号,通常为465,587,994,不同的邮件客户端端口号可能不一样;
  • @parameter auth

user:邮箱账号,填写已开启SMTP服务的邮箱地址即可;

pass:邮箱密码,不同的邮件系统可能机制不一样,QQ邮箱和网易邮箱为邮箱授权码;

  • @parameter message

from:填写发件邮箱地址;

to:填写收件方的邮箱地址;

  • nodemailer支持发送text文字内容、html网页内容以及附件的形式;

const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV, }) exports.main = async (event, context) => { const nodemailer = require("nodemailer"); let sendEmail = nodemailer.createTransport({ host: "smtp.163.com", //SMTP服务器地址 port: 465, //端口号,通常为465,587,994,不同的邮件客户端端口号可能不一样 secure: true, //如果端口是465,就为true;如果是其它就填false auth: { user: "xxxxxxxx@163.com", //邮箱账号,填写已开启SMTP服务的邮箱地址即可 pass: "xxxxxxxxx" //邮箱密码,不同的邮件系统可能机制不一样,QQ邮箱和网易邮箱为邮箱授权码 } }); let message = { from: 'xxxxxxxx@163.com', //填写发件邮箱地址 to: 'xxxxxxx@qq.com', //填写收件方的邮箱地址 subject: '这是我发送的第一封邮件', text: 'Hello world?', //text纯文字 html: 'Hello world?', //html代码 }; let res = await sendEmail.sendMail(message); return res; }

3.3云函数的简单调用

云函数编写完成,并右键云函数目录选择上传并部署所有文件,待部署完成即可使用

wxml页面代码:

点击发送邮件

js调用云函数:

sendEmail({ wx.cloud.callFunction({ name:"sendEmail", }).then(res => { console.log("邮件发送成功",res) }).catch(err => { console.log("邮件发送失败",err) }) },

成功执行,可在收件邮箱中查看到邮件:

4.云函数发送邮箱的扩展

本文主要介绍使用云函数来发送邮件的功能,虽然文中代码以网易邮箱为例,但在自己使用过程中可以灵活的改变参数以达到自己的需求。

且在实际开发过程中,可根据自己的需求来控制发送邮件的过程和流程,如果有什么不懂的问题可以查看官方文档,也可以私信本人(微信:ZW190308)

css计算函数 scalc 微信小程序_在微信小程序中,基于云函数发送邮件相关推荐

  1. 五十一、微信小程序云开发中的云函数

    @Author:Runsen 暑假很长,明年就是找工作的时候了.这个时候必须比之前还要拼命. 百无聊赖,看过文档才发现,微信小程序已将云函数,对象存储和云数据库这些都搬了进来,由于前几天刚刚看过这些方 ...

  2. 计算机教室如何防火,2020校园防火安全小知识_消防安全小知识顺口溜

    消防安全知识必须人人懂,火灾隐患无处不在,稍不注意就容易引发大祸.所以,我们要从身边做起,从自己做起.以下是小编整理了关于2020校园防火安全小知识_消防安全小知识顺口溜,希望你喜欢. 校园防火安全小 ...

  3. Spring Boot+微信小程序_保存微信登录者的个人信息

    1. 前言 微信小程序开发平台,提供有一类 API,可以让开发者获取到微信登录用户的个人数据.这类 API 统称为开放接口. Tip:微信小程序开发平台,会把微信登录用户的个人信息分为明文数据和敏感数 ...

  4. python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...

  5. 微信群打卡小程序_用微信小程序“小打卡”,打造免费的阅读平台!

    小归 一直和微信小程序--"小打卡"的创始人保持着微信通讯,也写了<快捷|以"小打卡"为例带你玩转微信小程序!>,这篇文章主要是真对如何打卡来写的, ...

  6. 专属海报小程序_轻松生成小程序分享海报

    小程序海报组件 需求 小程序分享到朋友圈只能使用小程序码海报来实现,生成小程序码的方式有两种,一种是使用后端方式,一种是使用小程序自带的canvas生成:后端的方式开发难度大,由于生成图片耗用内存比较 ...

  7. 仿qq邮箱源码程序_巧用小程序·云开发实现邮件发送功能丨实战

    先看效果图: 通过上面的日志,可以看出我们是158开头的邮箱给250开头的邮箱发送邮件,下面是成功接收到的邮件. 准备工作 1.qq邮箱一个 2.开通你的qq邮箱的授权码(会具体讲解) 3.注册自己的 ...

  8. 大小端交换的程序_数据库在小程序云开发中的应用

    " 高效率数据库为小程序·云开发赋能,共同为客户提供更多优质解决方案. " 目录 小程序·云开发介绍小程序·云开发的数据库服务解决方案及客户成功案例 小程序云开发介绍 " ...

  9. f2 柱状图滚动 钉钉小程序_钉钉小程序图表库AntV - F2 使用总结

    项目涉及图表部分的技术选型 对于图表这块的开发,使用一些流行的图表库可以大大提高我们的开发效率,目前较为流行的图表库大概有Echarts,Hcharts,AntV,他们都是大同小异,我印象比较深刻的是 ...

最新文章

  1. Filter及FilterChain的使用具体解释
  2. 微服务接入oauth2_SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法)...
  3. 人脸标注工具源码解读
  4. PHP基础题带详细答案,PHP基础语法试题(一)答案版.docx
  5. 3线8线译码器74HC138门电路设计一位二进制全减器电路
  6. linux 7 恢复系统,CentOS 7在grub rescue模式中修复系统
  7. js弹出框 确定 取消
  8. 腾讯云部署node mysql_【腾讯云】配置安装node
  9. C# 按行读取txt记事本文件
  10. Scala——函数式编程、面向对象
  11. ArcGis基础—shapefile矢量文件与lyr图层文件之间有何区别?
  12. c语言 srand was not,c语言srand生成随机数的问题
  13. native数据类型 react_react-native中使用realm数据库
  14. 使用CSS3设置条纹背景
  15. 三子棋小游戏(超详细)
  16. uc浏览器手机端禁用复制
  17. 计算机公共基础知识(N-S图,DFD图,PAD图,程序流程图,E-R图)
  18. 路由控制——ACL、IP-Prefix List
  19. OEEL——使用OEEL快速画出精美图案(以土地利用转移变化为例)
  20. PHP设置文本框背景透明度,话说半透明文本框!(不透明度可以任意调节,可以实现全透明)...

热门文章

  1. kubelet 命令行参数
  2. Windows脚本中等待几秒的替代方法
  3. 学习Linux命令(35)
  4. 学习Linux命令(33)
  5. 单链表(带头结点)的存储结构与基本操作(c语言)------亲测可用
  6. vue +Element-UI 实现完整的登录退出功能
  7. 理工科考CFA有难度嘛?该如何备考呢?
  8. PHP获取手机型号与系统型号代码
  9. 达龙云服务器也垃圾别买,达龙云电脑:云游戏即将开启游戏领域新篇章
  10. centos 5 系列版本下载地址 (没有5.8的)