我一直在一堆不同的教程、文档和此处跳来跳去,但找不到解决方案。而且我知道我错过了一小块拼图。
我已经使用 Nodemailer、Angular 和 Firebase 构建了一个联系表单和电子邮件发件人(商店 - 保存电子邮件数据和功能 - 触发发送电子邮件数据库)。
我假设我的 mailOptions 配置不正确。不确定我是否需要添加 html pre 标签,是否需要对其进行编码/解码、json 等等
import * as functions from "firebase-functions";
const admin = require("firebase-admin");
const nodemailer = require("nodemailer");
admin.initializeApp();
require('dotenv').config();
exports.sendMail = functions.firestore.document("emails/{emailId}")
.onCreate((snap: any, context: any) => {
const email = snap.data();
functions.logger.log("Email Information: ", email);
const mailTransport = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
secure: true,
service: "gmail",
auth: {
user: "[email protected]",
pass: "realPassword",
},
});
const mailOptions = {
from: email.email,
to: "[email protected]",
firstName: email.firstName,
lastName: email.lastName,
phone: email.phone,
subject: email.subject,
message: email.message,
};
return mailTransport.sendMail(mailOptions).then(() => {
return console.log("Email sent");
}).catch((error: any) => {
return console.log("Error sending email", error);
});
});
Firebase 记录器
12:37:56
I
function[us-central1-sendMail]
{
"firstName": "Homer ",
"lastName": "Simpson",
"seqNo": 1,
"phone": "07788 44 55 66",
"subject": "My subject is - Hi this is Homer ",
"message": "Email Information: ",
"email": "[email protected]",
"severity": "INFO"
}
Firestore 数据库电子邮件
查看 NodeMailer 电子邮件消息对象的可能字段:包括像
firstName
、lastName
或phone
这样的元素是行不通的。
您必须使用
text
或 html
元素,方法是将对应于所需正文内容的字符串传递给它们。例如:
使用文字:
const mailOptions = {
from: email.email,
to: "[email protected]",
subject: email.subject,
text: `firstName: ${email.firstName} - lastName: ${email.lastName}`
};
使用 html:
const mailOptions = {
from: email.email,
to: "[email protected]",
subject: email.subject,
html: `<b>Title</b><br/><br/>firstName: ${email.firstName} <br/><br/> lastName: ${email.lastName}`
};