我的下面的代码在本地工作,但当我部署到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
并显示:
{[错误:authorization.failed]代码:3,上一个:{[错误: 命令'cGludGVyZXN0'的错误响应] 代码: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授权应用
下一步
使用您要授权访问的应用程序登录 在接下来的十分钟内开户。谷歌会记得 登录后申请,并允许其访问您的 只要使用正确的密码,将来的帐户。
尝试再次登录,但仍然没有运气。我以为我应该在gmail中收到一封批准的电子邮件,但到目前为止还没有:(
更新2:
我尝试了另一个Gmail帐户并完成了批准Cloud Foundry进行应用访问的步骤,并且它可以正常运行。显然,对于不起作用的帐户,我错过了登录并批准Cloud Foundry的“10分钟窗口”。 Gmail从未回来,并要求再次批准。想念小姐:(
答案 0 :(得分:2)
我刚刚尝试将此部署到Cloud Foundry,它似乎有效 - 尽管您的应用程序不向HTTP客户端返回任何内容可能不是一个好习惯(尝试res.end而不是res.write in你最后的功能)。
您也应该使用VCAP_APP_PORT而不是VMC_APP_PORT,尽管两者现在都可以使用。
在我的情况下,我还创建了一个包含async和emailjs依赖项的package.json文件,并在本地测试并将应用程序推送到Cloud Foundry之前运行了npm install和npm shrinkwrap。
你看到了什么错误?你检查了服务器端的日志(vmc logs命令)吗?
答案 1 :(得分:0)