Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用Heroku发送邮件的Gmail_Javascript_Node.js_Reactjs_Express_Nodemailer - Fatal编程技术网

Javascript 用Heroku发送邮件的Gmail

Javascript 用Heroku发送邮件的Gmail,javascript,node.js,reactjs,express,nodemailer,Javascript,Node.js,Reactjs,Express,Nodemailer,我想在我的web应用程序中添加一个在订购后我会发送邮件的功能 我选择Nodemailer是因为它是最著名的npm 我对我的请求进行了编码,在本地环境中,它起作用了 我把代码上传到Heroku,我得到一个错误 错误:无效登录:534-5.7.14{ 让mailTransporter=nodeEmailer.createTransport({ 服务:“gmail”, 认证:{ 用户:process.env.MAIL, 通过:process.env.PASSWORD, }, }); 让邮件详细信息={

我想在我的web应用程序中添加一个在订购后我会发送邮件的功能

我选择Nodemailer是因为它是最著名的npm

我对我的请求进行了编码,在本地环境中,它起作用了

我把代码上传到Heroku,我得到一个错误

错误:无效登录:534-5.7.14{ 让mailTransporter=nodeEmailer.createTransport({ 服务:“gmail”, 认证:{ 用户:process.env.MAIL, 通过:process.env.PASSWORD, }, }); 让邮件详细信息={ 发件人:process.env.MAIL, 致:邮寄:, 主题:`谢谢你的购买。带着爱', 文字:“如有任何问题,请回复此邮件”, }; sendMail(邮件详细信息、函数(错误、数据){ 如果(错误){ 控制台日志(err); log(`error sent mail to${mail}`,error'); }否则{ console.log('success'); log(`successfully sent mail to${mail}`,'info'); } }); };
exports.sendMail=sendMail使用Gmail作为SMTP中继不是最理想的,因为谷歌服务器有时可能会拒绝基本的用户名/密码验证

有一些变通办法。最理想的方法是使用OAuth2发送电子邮件

OAuth2 OAuth2使用访问令牌而不是密码来执行身份验证。 我将不介绍设置OAuth2的步骤,因为这可能需要一些时间,但是如果您感兴趣,这个答案:介绍所有步骤

应用程序密码 如果您试图发送电子邮件的Google帐户启用了两步验证,则使用密码发送电子邮件将不起作用。相反,你需要在谷歌网站上生成一个特定于应用程序的密码,并在密码字段中传递该密码

更多信息请点击此处:

启用不太安全的应用程序 如果你仍然想使用当前设置,你必须确保在你发送电子邮件的谷歌帐户上启用不太安全的应用程序。这将让你只需要一封电子邮件和一个密码就可以通过谷歌认证

更多信息请点击此处:


在启用不太安全的应用程序之前,基本密码验证将不起作用。

在切换到以下应用程序之前,我一直面临类似的问题: