通过 NODE.JS 在 IBM Cloud 函数中发送邮件



>我有类似的问题:PHP 邮件函数无法完成电子邮件的发送 但是经过几次尝试,我认为这不是我的解决方案......

目的: 创建一个可以发送电子邮件的操作。 法典:

function main(params) {
const params = {
"payload": {
"id": "sender.address@gmail.com",
"password": "CodeForTheSenderAccount",
"receiver": "another.mail.address@gmail.com",
"subject": "Test Wikit",
"body": "<html>HELLO WORLD</html>"
}
}
const nodemailer = require('nodemailer');
//Creation of a SMTP transporter
var transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: params.payload.id,
pass: params.payload.password
}
});
//Creation of data to send
const mail = {
from: '"Wikitest" <' + params.payload.id + '>',
to: params.payload.receiver,
subject: params.payload.subject,
text: 'Hello World',
html: params.payload.body
}
//Sending the mail
return(transporter.sendMail(mail, function (err, info) {
if (err) {
const ret = {status: 'OK'};
} else {
const ret = {status: 'KO'};
}
transporter.close();
return (ret);
}));
}

此代码在本地有效,我收到电子邮件。但在 IBM Cloud 控制台中运行函数时则不然。

我认为这是由于SMTP服务器,但我不确定...

你们中的一些人会看到"有效载荷"参数。这是因为此操作是按顺序排列的,并且该操作在发送参数之前。

在无服务器函数中使用异步 JavaScript 时,需要返回并解析 Promise。以下是示例 https://github.com/apache/incubator-openwhisk/blob/master/docs/actions-node.md#creating-asynchronous-actions 的相关文档。

return(new Promise(function(resolve, reject) {
transporter.sendMail(mail, function (err, info) {
if (err) {
const ret = {status: 'OK'};
} else {
const ret = {status: 'KO'};
}
transporter.close();
resolve(ret);
}}));

最新更新