微信小程序开发:云端发送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博客告诉我。

青山绿水,后会有期!

学习云开发的下一站,请从阅读官方文档开始。




本文作者: 杜赛
发布时间: 2022年07月15日 - 12:34
最后更新: 2023年10月17日 - 12:35
转载请保留原文链接及作者