邮件从本地主机发送而不是从数字海洋现场直播
我现在用的是Sendgrid API从我的Node.js项目发送电子邮件。当我的本地机器上运行这个工作得很好,但我现在已经部署到数字海洋(Ubuntu的)的邮件没有发送。我已阅读,数字海洋块SMTP通默认端口,你可以明显地通过命令行打开他们,但我找不到一个易于理解的关于如何做到这一点的解释。
const nodemailer = require("nodemailer");
const sendgridTransport = require('nodemailer-sendgrid-transport');
const transporter = nodemailer.createTransport(sendgridTransport({
auth: {
api_key: process.env.SENDGRID_API
}
}));
return transporter.sendMail({
to: '[email protected]',
from: email,
subject: subject,
html: `<h1>Contact Form</h1>
<p>Name: ${name}</p>
<p>Email: ${email}</p>
<p>${comments}</p>
`
});
UPDATE
如果我删除了API密钥.ENV,实际上硬编码在例如:
const transporter = nodemailer.createTransport(sendgridTransport({
auth: {
api_key: '12345677788999'
}
}));
然后我的电子邮件发送。这是我.ENV文件(我使用dotenv)
DB_USER=username
DB_PASSWORD=password
DB_NAME=mydbname
SENDGRID_API=12345677788999
所以,不知道为什么这样做呢?
回答如下:有你的环境出口这“SENDGRID_API”。那么只有你可以使用process.env.SomeEnvironmentVar。
如果您正在使用PM2。你必须将它添加到生态系统文件。然后,它会使用该配置和启动应用程序。使所有的瓦尔可用。