微信小程序开发:云端发送Email邮件
3454 views, 2023/10/17 updated Go to Comments
云开发待办清单的任务,实际上已经完成了:你拥有了一个小巧、功能相对完整的“云清单”。
不过这里将最后花一章的功夫,补充一个可能你会经常需要到功能:发送Email邮件。
Email邮件虽然无法简单的从小程序本地发送,但是借助云开发,可以轻松实现。
发送邮件功能有什么用?我说一个简单的:收集用户的意见反馈。也就是说,用户上报了bug,将直接发送到你的Email里。这比经常去查看数据库更方便吧。
配置
首先准备一个QQ邮箱(其他厂家也行),获得授权码。
进入邮箱后,点击:设置 - 账户 - 开启 POP3/SMTP
服务。更具体的流程这里就不讲了,可参考QQ邮箱官方的引导文档。
总之你获得的授权码应该像下图这样:
接着开始写代码。
云端代码
轻车熟路,首先新建云函数 sendEmail
。
发送邮件需要引入第三方库 nodemailer
,因此右键云函数,选择 在内建终端中打开
:
进入终端后,开发工具就自动打开了终端窗口,输入下面的指令安装库:
> npm install nodemailer
静待一会儿,如果没报错就安装成功了。
如果你的电脑上没有安装
node
,这里可能会提示你先安装它。
然后就可以写云函数的入口文件了,很简单:
// cloudfunctions/sendEmail/index.js
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 引入 nodemailer
const nodemailer = require('nodemailer')
// 创建一个SMTP客户端配置
const config = {
host: 'smtp.qq.com', // 邮箱smtp服务,不同厂家地址不一样
port: 465, // 邮箱端口,不同厂家可能不一样
auth: {
user: '这里填你的邮箱', // 邮箱账号
pass: '这里填你的邮箱授权码' // 邮箱授权码
}
};
// 创建一个SMTP客户端对象
var transporter = nodemailer.createTransport(config);
// 云函数入口函数
exports.main = async (event, context) => {
// 创建一个邮件对象
var mail = {
// 发件人,填写发件人邮箱
from: '来自杜赛 <xxx@xxx.com>',
// 主题
subject: 'Weapp [待办清单] 用户反馈',
// 收件人
to: '这里填收件人的邮箱',
// 邮件内容,text或者html格式
text: event.content
};
let res = await transporter.sendMail(mail);
return res;
}
代码主体是调用 nodemailer
的接口发送邮件,简单到甚至没有需要讲解的地方。稍微注意下配置别写错了,比如端口啊、授权码啊这些,各家可能都有所区别(比如腾讯和网易)。
保存后老样子,代码记得上传。
本地代码
本地代码就更简单了,在提交待办时调用云函数就搞定了:
// pages/index/index.js
Component({
// ...
methods: {
// ...
// 点击提交按钮
inputSubmit() {
// ...
// 发送邮件服务
getApp().cloud().callFunction({
name: 'sendEmail',
data: {
content: newItem.content
},
})
},
// ...
},
})
重新编译后,试试提交一条待办,顺利的话你的Email也会得到通知了。
正式产品中,不可能每上传一条待办就发送一条邮件,那得把你烦死。本文这样写是为了尽可能少改动其他不必要的代码。实际开发中,发送邮件功能可能会常用于用户建议反馈等地方。
总结
云开发是对 Django 开发的补充,它们各有优劣,读者朋友根据自身需要进行选择,甚至混合使用都是可以的。
云开发的介绍向教程到这里就结束了。后续还有其他写作计划,如果你有想学习的知识点,请在评论区、GitHub或博客告诉我。
青山绿水,后会有期!
学习云开发的下一站,请从阅读官方文档开始。