我在下面有这段代码,它可以在本地工作,但是当我部署到时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: { [Error: bad response on command 'cGludGVyZXN0'] code: 2, smtp: '535-5.7.1 请使用您的网络浏览器登录,然后重试。在\n535 5.7.1 https://support.google.com/mail/bin/answer.py?answer=7875 4 hn9sm22202393qab.8 - gsmtp\r\n' }, smtp: undefined }了解更多信息
我测试了另一个 SMTP 或不同的 gmail 帐户,它可以工作。所以它特定于我正在测试的这个 gmail 帐户。
然后我点击此链接https://support.google.com/mail/bin/answer.py?hl=en&answer=78754授权该应用程序
下一步
在接下来的十分钟内使用您要授权访问您的帐户的应用程序登录。Google 会在登录后记住该应用程序,并且只要它使用正确的密码,它就会允许它在未来访问您的帐户。
并尝试再次登录,但仍然没有运气。我以为我应该在 gmail 中收到一封电子邮件来批准,但到目前为止还没有:(
更新 2:
我尝试使用另一个 gmail 帐户并完成了批准 Cloud Foundry 访问应用程序的步骤,并且它可以正常工作。显然,对于不起作用的帐户,我错过了登录和批准 Cloud Foundry 的“10 分钟窗口”。Gmail 再也没有回来并要求再次批准它。小姐是小姐:(