更新记录

1.0.0(2022-03-23)

初版,此模块主要作用是:无需再引用其他第三方npm包


平台兼容性

阿里云 腾讯云 支付宝小程序云
×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


vk-mail

插件名称:vk-mail

作者:VK

关于插件问题,可以加Q群:22466457,只要是插件问题,基本都能在群内得到解决。

什么是 vk-mail

vk-mail 是一个 邮件发送 请求库,兼容任何 unicloud 框架。(只要是 node.js 就能使用,使用此库后无需再 npm i nodemailer)

使用非常简单,与 nodemailer API接口保持一致。此库是为了减少一次 npm i nodemailer ,你可以理解为本地版的 nodemailer (nodemailer太大了)

示例

主要代码分为 3 步

// 1、引入 vk-mail
var vkmail = require('vk-mail');

// 2、创建邮箱服务实例
let emailService = vkmail.createTransport({
    "host": "", // 邮件服务商域名地址
    "port": "", // 端口
    "secure": "", // use SSL
    "auth": {
        "user": "", // 发件人邮箱账号
        "pass": "", // 账号授权码
    }
});

// 3、发送邮件
let sendMailRes = await emailService.sendMail({
    "from": "", // 邮件的发送者
    "to": "", // 邮件的接收者
    "cc": "", // 由于邮件可能会被当成垃圾邮件,但只要把右键抄送给自己一份,就不会被当成垃圾邮件。
    "subject": "", // 邮件的标题
    "text": "", // 邮件的内容
    "html": "", // html代码 html和text二选一
});

使用云函数发送邮箱验证码完整示例代码

'use strict';

var vkmail;
try {
    vkmail = require('vk-mail');
} catch (err) {
    console.error("请先添加公共模块:vk-mail");
}

exports.main = async (event, context) => {
    let res = { code: 0, msg: "" };

    let {
        email, // 前端接收邮箱
        type = "bind", // 前端接收验证码类型(如: login register bind unbind)
    } = event;

    // 支持QQ 163 等主流邮箱

    let emailConfig = {
        "host": "smtp.163.com",
        "port": 465,
        "secure": true,
        "auth": {
            "user": "xxxx@163.com", // 发件人邮箱账号
            "pass": "xxxxxxxxxxxx", // 账号授权码
        }
    };

    if (!email) return { code: -1, msg: "email不能为空" };
    if (!type) return { code: -1, msg: "type不能为空" };

    let code = Math.floor(Math.random() * 100000) + 100000;
    let subject = `验证码 ${code}`;
    let text = `验证码 ${code},打死也不要告诉别人!`;

    // 创建邮箱服务实例
    let emailService = vkmail.createTransport({
        "host": emailConfig.host,
        "port": emailConfig.port,
        "secure": emailConfig.secure, // use SSL
        "auth": emailConfig.auth
    });

    try {
        // 发送邮件
        res.sendMailRes = await emailService.sendMail({
            "from": emailConfig.auth.user, // 邮件的发送者
            "to": email, // 邮件的接收者
            "cc": emailConfig.auth.user, // 由于邮件可能会被当成垃圾邮件,但只要把右键抄送给自己一份,就不会被当成垃圾邮件。
            "subject": subject, // 邮件的标题
            "text": text, // 邮件的内容
        });
        // 标记发送成功
        res.code = 0;
        res.msg = "ok";
        // 发送验证码成功后,通常需要设置验证码(写入数据库)
        // await uniID.setVerifyCode({ code, email, type });
    } catch (err) {
        res.code = -1;
        res.msg = "邮件发送失败";
        res.err = err;
    }
    return res;
};

如何获取配置信息?

{
    "host": "", // 邮件服务商域名地址
    "port": 465, // 端口
    "secure": true, // use SSL
    "auth": {
        "user": "", // 发件人邮箱账号
        "pass": "", // 账号授权码
    }
}

host

登录自己的网页版邮箱,有类似 设置 之类的按钮,以 163 邮箱为例。

  • 点击 设置- POP3/SMTP/IMAP
  • IMAP/SMTP服务 开启
  • 在下面可以看到 SMTP服务器 域名为 smtp.163.com 故 host 为 smtp.163.com

port

port 如无特殊说明,一般固定为 465 故 port 为 465

secure

固定为 true 即可

auth 授权信息

user 发件人邮箱账号

pass 账号授权码

一般在你开启服务时,页面上会显示你的账号授权码

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问