我在Heroku上运行一个刮刀应用程序,每隔一段时间就会发送一次电子邮件。有时它会每2分钟一次,有时它会在2天内发送任何东西 - 取决于刮刀发现的内容。我遇到了电子邮件身份验证的不断错误。我尝试使用nodemailer和emailjs配置电子邮件。两者都遇到了同样的问题。我想知道是否是因为Heroku服务器的分发方式?
我已采取以下步骤:
1)解锁帐户:https://accounts.google.com/DisplayUnlockCaptcha
2)在此处允许安全性较低的应用:https://myaccount.google.com/lesssecureapps
使用nodemailer和emailjs,我注意到它可以工作几个小时,但如果一天没有发送电子邮件,一旦它尝试发送另一个电子邮件,我就会收到验证错误。以下是使用emailjs的代码,该代码可以运行几个小时然后因身份验证错误而失败:
var server = email.server.connect({
user: process.env.CRAWLER_MAIL,
password:process.env.CRAWLER_PWD,
host: "smtp.gmail.com",
ssl: true
});
var message = {
text: "Placeholder",
from: 'NAME <'+ process.env.CRAWLER_MAIL+'>',
to: eachEmail[0],
subject: emailSubject,
attachment:
[
{data:emailBody, alternative:true}
]
};
server.send(message, function(err, message) { console.log(err || message); });
以下是Heroku日志中的错误:
Error: authorization.failed (bad response on command '[redacted]': -5.7.14 https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=[redacted]-)
我不会对此帐户使用两步验证,因此我认为我不需要应用密码。关于我如何能够始终如一地工作的任何其他想法?