看完本文你将学到:
- 微信小程序云函数的部署与使用
- nodemailer插件的使用
背景故事:
hello,大家好这里是小曹同学。上个星期因为原来开发学校课程表的学长毕业了课程表小程序不能用了。
在受了两个多星期无数遍打开相册查看课程表图标的痛苦之后,决定自己开发了一个小程序。但是由于学校的内网不供外网访问,无法将后台爬虫程序放到服务器来爬取课程,导致我用了比较原始的方法。手动点击运行程序爬取新注册同学的课程表(先别骂!小曹只学了三天的python和后端,爬虫还是小曹的队友爸爸给作者写好了开封即用的=-=,至于python调用小程序的云数据库的问题,后续文章会说到的~敬请期待)。
这就导致了一个问题,如何及时的知道有新同学注册使用了我的小程序呢?于是我想到了一个比较复古的解决办法!注册之后自动给我的邮箱发个邮件。具体效果如下图。
打开你准备的qq邮箱进入设置找到账户,在账户信息下找到POP3/SMTP服务获取授权码,具体操作看下图
复制保存好你的授权码,后面会用到
2.1初始化后在项目目录中找到project.config.json配置文件配置云函数
3.1右键cloud文件,新建一个云函数
3.2创建完之后右键刚刚创建的云函数,选择在终端里打开,输入npm install nodemailer下载nodemailer插件
这里贴一下代码
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 引入发送邮件的类库
const nodeemailer = require('nodemailer')
// 创建smtp客户端配置
const config = {
host:'smtp.qq.com', // 网易邮箱smtp.163.com
port:465, // 网易的端口25
auth:{
user:'123@qq.com',// 邮箱账号
pass:'' // 自己的邮箱授权码
}
}
// 创建smtp客户端兑现
const transporter = nodeemailer.createTransport(config)
// 云函数入口函数
exports.main = async (event, context) => {
// 创建一个邮件对象
const email = {
// 发件人
from: '更新一下课表 <123@qq.com>',
// 主题
subject:'更新课表',
// 收件人
to:'12222@qq.com',
// 邮件内容
text:'你好,麻烦更新一下课表!'
};
let res = await transporter.sendMail(email)
return res
}
五、上传云函数并且调用云函数
在使用已经写好的云函数时,需要先上传编写好的云函数,右键云函数目录选择上传并部署就行了
调用云函数的方法是wx.cloud.callFunction
wx.cloud.callFunction({
name:'sendEmail', // 这里填写调用的云函数名称
success(res){// 调用成功后的操作
wx.hideLoading();
wx.showToast({
title: '发送成功!',
icon:'success'
})
console.log(res)
},
fail(res){// 调用失败后的操作
wx.showToast({
title: '发送失败',
icon:'error'
})
console.log(res)
}
})
到这里整个云函数邮件发送的功能就算完成了。
本文参考文章微信小程序发送邮件,小程序云开发使用云函数发送邮件



