MonikaChen
MonikaChen
  • 发布:2021-03-05 11:58
  • 更新:2022-09-14 08:40
  • 阅读:2134

【分享】uniCloud云函数结合nodemailer发送邮件的方法

分类:uniCloud

网上找的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 transporter = nodemailer.createTransport({  
        host: 'smtp.126.com',  
        secureConnection: true,  
        port: 465,  
        secure: true,  
        auth: {  
            user: 'yourname@126.com',  
            pass: 'SMTP授权码'  
        }  
    })  
    const info = await transporter.sendMail({  
        from: '"邮箱昵称"<yourname@126.com>',  
        to: 'receiver@163.com',  
        subject: '主题',  
        html: '<h1>HTML代码</h1>',  
        text: '文本'  
    })  
    if (info.messageId) {  
        return {code: 0, msg: '发送成功'}  
    } else {  
        return {code: 1, msg: '发送失败', info}  
    }  
}

代码里最关键的是await transporter.sendMail这行,这样写才是在当前线程发

百度上找到的大部分人是这么写的:

transporter.sendMail({  
        from: '"邮箱昵称"<yourname@126.com>',  
        to: 'receiver@163.com',  
        subject: '主题',  
        html: '<h1>HTML代码</h1>',  
        text: '文本'  
    }, (error, info) => {  
    if (error) {  
        return console.log(error);  
    }  
    console.log(info)  
})

这样写的话会新建线程,这在普通的node环境当然没错,但是uniCloud却报了关于线程的错误,猜测是uniCloud不允许多线程

原文出处:https://coding3.com/archives/uniCloud-nodemailer.html

0 关注 分享

要回复文章请先登录注册

7***@qq.com

7***@qq.com

我是纯新手,得怎么在当前文件夹执行npm install nodemailer
2022-09-14 08:40
p***@gmail.com

p***@gmail.com

一样的代码,没有成功
2022-04-12 21:32
1***@qq.com

1***@qq.com

能循环调用这个东西去发麻,不是单独发给一个邮箱,发给多个邮箱
2021-11-25 21:34
1***@qq.com

1***@qq.com

雀氏可以,可以的
2021-11-25 17:25
cuixinyu

cuixinyu

回复 小黄鸭12312 :
npm install nodemailer了吗
2021-08-23 16:42
小黄鸭12312

小黄鸭12312

回复 小黄鸭12312 :
解决了
2021-06-25 13:33
小黄鸭12312

小黄鸭12312

我加了await还是发送不了,邮件哎 ,用的是unicloud阿里云
2021-06-24 17:05
[已删除]

[已删除]

的确成功了,非常感谢。。。
2021-06-07 01:20