uniCloud云函数结合nodemailer发送邮件的方法

使用uniCloud云函数结合nodemailer发送邮件的时候,在本地调试可以发送成功,但是当我把云函数上传后,就不能发送到邮件了,但是云函数依旧执行了。开始我以为是node.js版本的原因,但是经过排查,我发现不是版本原因,而是线程原因,于是,我前往社区查看,最终找到了一篇很有用的文章。如下:

网上找的node发邮件,用到最多的是nodemailer,于是利用百度出来的代码,直接运行在uniCloud,本地运行发送成功,但是云端一直报错。
仔细看了报错内容,提到Thread,所以猜测代码里新建了线程去发邮件。
为了找到如何用当前线程发,第一时间想到的是nodemailer的官方文档:https://nodemailer.com/about/
结合官方文档,写了个可以在uniCloud云端正常发邮件,并且亲测成功的代码:

  这里也放上我更改后的代码:

'use strict';  
const nodemailer = require('nodemailer') // 记得在当前文件夹执行npm install nodemailer后才能使用  
exports.main = async (event, context) => { 
            // let name = event.body
          var user = '87654321@qq.com' //自己的邮箱
          var pass = 'xxxxxx' //qq邮箱的授权码
          var rece = '12345678@qq.com' //对方邮箱
    let transporter = nodemailer.createTransport({  
        host: 'smtp.qq.com',  
        secureConnection: true,  
        port: 465,  
        secure: true,  
        auth: {  
            user: user,  
            pass: pass 
        }  
    })  
    const info = await transporter.sendMail({  
        from: `发送人<${user}>`,  
        to: `接收人<${rece}>`,  
        subject: '主题',  
        html: '<h1>这是来自云函数的邮件</h1>',  
        // text: '文本'  
    })  
    if (info.messageId) {  
        // return {code: 0, msg: '发送成功'}  
        return event
    } else {  
        // return {code: 1, msg: '发送失败', info}  
        return event
    }  
}

如上代码所示,亲测可用!

 

posted @ 2022-11-04 23:24  莫颀  阅读(265)  评论(0编辑  收藏  举报