在Cloud Foundry Node.js上发送Gmail SMTP电子邮件?

我有下面这个代码在本地工作,但是当我部署到api.cloudfoundry.com ,根本没有电子邮件发送。 你能帮我理解为什么吗? 是否因为Cloud Foundry阻止了某个端口?

 var port = (process.env.VMC_APP_PORT || 3000), host = (process.env.VCAP_APP_HOST || 'localhost'), http = require('http'), async = require('async'); var email = require("emailjs"); var server = email.server.connect({ user: "username", password:"password", host: "smtp.gmail.com", ssl: true }); // send the message and get a callback with an error or details of the message that was sent http.createServer(function(req, res) { async.series([ function(callback){ server.send({ text: "This should be <b>BOLD</b>...", from: "XXX <xxx@gmail.com>", to: "YYY <yyy@gmail.com>, ZZZ <zzz@gmail.com>", cc: "", subject: "emailjs: test HTML body 3", attachment: [ {data:"<h1>Big a$$ title</h1><br/>Or maybe this should be <b>BOLD</b> instead!!", alternative:true} ] }, function(err, message) { console.log(err || message); }); callback(null, 'success'); } ], function(err, results){ res.writeHead(200, {'Content-Type': 'text/plain'}); res.write(results + '...'); }); }).listen(port, host); 

更新1:

看起来这是一个Gmail SMTP问题。 我做了vmc files myapp logs/stdout.log ,它显示:

{[Error:authorization.failed] code:3,previous:{[错误:命令'cGludGVyZXN0'上的错误响应]代码:2,smtp:'535-5.7.1请使用您的浏览器login,然后重试。 Le arn more at \ n535 5.7.1 https://support.google.com/mail/bin/answer.py?answer=7875 4 hn9sm22202393qab.8 – gsmtp \ r \ n'},smtp:undefined}

我testing了其他SMTP或不同的Gmail帐户,它的工作原理。 所以这是特定于我正在testing的这个Gmail帐户。

然后,我按照此链接https://support.google.com/mail/bin/answer.py?hl=zh_CN&answer=78754授权应用

下一步

在接下来的十分钟内使用您要授权访问您的帐户的应用程序login。 Google会在login后记住该应用程序,只要它使用了正确的密码,它将允许它在将来访问您的帐户。

并尝试再次login,但仍然没有运气。 我以为我应该收到一封邮件内批准,但没有到目前为止:(

更新2:

我尝试了另一个Gmail帐户,并通过审批Cloud Foundry的应用程序访问的步骤,它的工作原理。 显然,对于没有工作的帐号,我错过了“10分钟窗口”login批准Cloud Foundry。 Gmail从来没有回来,并要求再次批准。 小姐是小姐:(

我刚刚尝试将其部署到Cloud Foundry,而且它似乎工作 – 尽pipe您的应用程序可能不会将任何内容返回给HTTP客户端(尝试使用res.end而不是res.write作为最后一个函数)。

您也应该使用VCAP_APP_PORT而不是VMC_APP_PORT,尽pipe两者现在都可以使用。

在我的情况下,我还创build了一个包含async和emailjs依赖关系的package.json文件,并在本地testing之前运行npm install和npm shrinkwrap,并将应用程序推送到Cloud Foundry。

你看到什么错误? 你是否检查服务器端的日志(vmc日志命令)?