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

1.开发准备

1.1邮箱

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

1.2Nodemailer功能

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

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

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

2.1获取QQ邮箱授权码

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

1.在首页找到设置

微信小程序云函数收费标准(在微信小程序中)(1)

2.选择账户

微信小程序云函数收费标准(在微信小程序中)(2)

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

微信小程序云函数收费标准(在微信小程序中)(3)

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

微信小程序云函数收费标准(在微信小程序中)(4)

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

2.2.获取网易邮箱授权码

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

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

微信小程序云函数收费标准(在微信小程序中)(5)

2.在此页面点击开启

微信小程序云函数收费标准(在微信小程序中)(6)

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

微信小程序云函数收费标准(在微信小程序中)(7)

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

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

3.1配置依赖

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

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

3.2编写代码

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

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

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

from:填写发件邮箱地址;

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

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: '<b>Hello world?</b>', //html代码 }; let res = await sendEmail.sendMail(message); return res; }

3.3云函数的简单调用

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

wxml页面代码:

<button bindtap="sendEmail">点击发送邮件</button>

js调用云函数:

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

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

微信小程序云函数收费标准(在微信小程序中)(8)

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

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

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

,