使用云开发 Cloudbase 开发邮件发送功能


使用云开发 Cloudbase 开发邮件发送功能

借助于第三方模块Nodemailer,我们可以实现使用云函数来发邮件。我们可以通过发送邮件通知用户一些重要的活动信息。

技术文档:Nodemailer官方文档

1.准备一个邮箱并开启SMTP服务

​ 我们可以借助QQ邮箱、网易邮箱、Gmail等邮件系统开启IMAP/SMTP服务IMAP是互联网邮件访问协议,通过这种协议可以从邮件服务器获取邮件的信息、下载邮件,也就是接收邮件;SMTP也就是简单邮件传输协议,通过它可以控制邮件的中转方式,帮助计算机在发送或中转信件时找到下一个目的地,也就是发送邮件。本文示例使用qq邮箱。

​ 不同的邮件系统有着不同的smtp发送邮件服务器,端口号也会有所不同,这些都可以去相应的邮箱的设置里看到相关的说明的,QQ邮箱的发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587。

163邮箱:smtp.163.com,端口号25。用记事本保存自己的授权码,后续会使用。

image-20200618004854702

2.初始化云函数,创建一个发送邮件的云函数

创建一个云函数,如sendemail,然后在终端中打开,首先npm install,作用是安装wx-server-sdk,然后就是安装我们所需的发送邮件的模块npm install nodemailer

接下来在index.js里输入以下代码,根据实际情况修改相关参数:

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
//引入发送邮件的类库
var nodemailer = require('nodemailer')
// 创建一个SMTP客户端配置
var config = {
  host: 'smtp.qq.com', //网易163邮箱 smtp.163.com
  port: 465, //网易邮箱端口 25
  auth: {
    user: '你的邮箱', //邮箱账号
    pass: '你的邮箱授权码' //邮箱的授权码
  }
};
// 创建一个SMTP客户端对象
var transporter = nodemailer.createTransport(config);
// 云函数入口函数
exports.main = async (event, context) => {
  // 创建一个邮件对象
  var mail = {
    // 发件人
    from: '来自云函数测试邮件 <23*****78@qq.com>',
    // 主题
    subject: '云函数sendemail',
    // 收件人
    to: '收件人的邮箱',
    // 邮件内容,text或者html格式
    text: '测试云函数发送邮件' //可以是链接,也可以是验证码
    html: "<b>Hello world?</b>", // html 
  };

  let res = await transporter.sendMail(mail);
  return res;
}

部署上传云函数之后,就可以在小程序端本地调试,测试云函数,接下来,收件人的邮箱就会收到你发送的邮件了。image-20200618011159710 同时可以在控制台查看相关打印信息。

2020-06-18 00-21-21 的屏幕截图

这个只是定向给某个邮箱发送邮件,实际应用场景应加以改变。

邮箱功能的拓展与应用

  • 结合云数据库给指定的人发送邮件

    一般我们可以遇到的场景就是在于登录注册及找回密码时,向用户发送提示邮件,当用户A给用户B写的文章或留言评论时可以给B发邮件,当用户参与活动需要通知时,管理员可以给目标用户发邮件等。不同的业务场景接收邮件的人也会不同,邮件里面的内容根据业务的需求也会有所不同,因此在邮件发送的过程中,数据库扮演着非常重要的角色。

  • 实现密码校验与邮件的定时发送

    当用户在个人资料里绑定自己的邮箱时,可以发送邮件以及校验码,校验码可以是数据库的一个字段,它的值可以是一些随机生成的字符串,但是有一定的生命周期,比如半个小时之后会失效,这个自动失效的操作则需要使用到定时触发器;邮件也可以是周报、日报的周期性定时发送,在每天或每周的某个时间点,批量收集当天或当周的数据自动发送给用户,这个也是依赖定时触发器,这个我们会在后面定时触发器的章节进行说明。


文章作者: 毛雷
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 毛雷 !
评论
  目录