ski*_*kip 8 email heroku node.js angularjs nodemailer
我已经完成了使用Nodemailer和AngularJS以及NodeJS发送电子邮件的基本电子邮件设置,我已经在heroku上部署了项目.
当我在heroku上运行应用程序时,电子邮件似乎工作得很好,但是当我将它部署到Heroku时,没有发送电子邮件.
为了验证我使用的是gmail地址,我还有bcc另一个gmail地址.因此from,bcc地址是两个不同的Gmail地址.该from地址与用于身份验证的地址相同.
有人可以帮我解决这个问题吗?
编辑:添加代码
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: 'foobar@gmail.com',
pass: 'foobar'
}
});
router.post('/send',function(req,res){
var mailOptions = {
from: 'Foo Bar ? <foobar@gmail.com>',
to: req.body.email,
subject: "Hello " + req.body.email,
text: 'Hello ' + req.body.email + '?',
html: "<p>Hello " + req.body.email + " </p>",
bcc: "fred@gmail.com"
};
transporter.sendMail(mailOptions, function(error, info){
if(error){
console.log(error);
}else{
console.log('Message sent: ' + info.response);
res.send(200);
}
});
});
Run Code Online (Sandbox Code Playgroud)
我相信这是谷歌帐户安全的问题. - 由于设备未知(位置),Google阻止您登录使用邮件功能.
验证这一步的几步:
在本地启动服务器并发送电子邮件.
检查您的帐户提醒未知登录.
这可以通过以下方式暂时解决:https: //accounts.google.com/DisplayUnlockCaptcha
更永久的解决方案是将密码更改为更强的级别:
大写字母+小写字母+特殊符号+数字
小智 9
而不是使用像这样的直接 gmail 凭据
auth: {
user: 'foobar@gmail.com',
pass: 'foobar'
}
Run Code Online (Sandbox Code Playgroud)
使用OAuth2
auth: {
type: 'OAuth2',
user: 'user@example.com',
accessToken: 'ya29.Xx_XX0xxxxx-xX0X0XxXXxXxXXXxX0x'
}
Run Code Online (Sandbox Code Playgroud)
如果我们使用上面提到的直接凭据,Google 会阻止 heroku IP(不安全)。你可以参考这篇 Medium 文章在此处
小智 0
尝试更新nodemailer包(使用“npm update nodemailer”命令)
\n\nvar transporter = nodemailer.createTransport({\n host: \'smtp.gmail.com\',\n port: 465,\n secure: true,\n auth: {\n user: \'youremai@gmail.com\', // Your email id\n pass: \'pwd123\' // Your password\n },\n tls: {\n // do not fail on invalid certs\n rejectUnauthorized: false\n }\n});\nrouter.post(\'/send\',function(req,res){\n\n var mailOptions = {\n from: \'Foo Bar \xe2\x9c\x94 <foobar@gmail.com>\',\n to: req.body.email,\n subject: "Hello " + req.body.email,\n text: \'Hello \' + req.body.email + \'\xe2\x9c\x94\',\n html: "<p>Hello " + req.body.email + " </p>",\n bcc: "fred@gmail.com"\n };\n transporter.sendMail(mailOptions, function(error, info){\n if(error){\n console.log(error);\n }else{\n console.log(\'Message sent: \' + info.response);\n res.send(200);\n }\n }); \n});\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
7650 次 |
| 最近记录: |