在Cloud Foundry Node.js上发送Gmail SMTP电子邮件?
下面的代码在本地运行,但当我部署到在Cloud Foundry Node.js上发送Gmail SMTP电子邮件?,node.js,smtp,gmail,sendmail,cloud-foundry,Node.js,Smtp,Gmail,Sendmail,Cloud Foundry,下面的代码在本地运行,但当我部署到api.cloudfoundry.com时,根本没有发送电子邮件。你能帮我弄明白为什么吗?是因为云计算阻止了某些端口吗 var port = (process.env.VMC_APP_PORT || 3000), host = (process.env.VCAP_APP_HOST || 'localhost'), http = require('http'), async = require('async'); var email =
api.cloudfoundry.com
时,根本没有发送电子邮件。你能帮我弄明白为什么吗?是因为云计算阻止了某些端口吗
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);
var port=(process.env.VMC_APP|u port | 3000),
主机=(process.env.VCAP_APP_host | |“localhost”),
http=require('http'),
async=require('async');
var email=require(“emailjs”);
var server=email.server.connect({
用户:“用户名”,
密码:“密码”,
主机:“smtp.gmail.com”,
ssl:true
});
//发送消息并获取包含错误或已发送消息详细信息的回调
http.createServer(函数(req,res){
异步系列([
函数(回调){
server.send({
文字:“这应该是粗体……”,
发件人:“XXX”,
致:“YYY,ZZZ”,
抄送:“,
主题:“emailjs:测试HTML正文3”,
附件:
[
{data:“大a$$title
或者应该改为粗体!!”,可选:true}
]
},函数(err,message){console.log(err | | message);});
回调(null,“success”);
}
],
功能(错误、结果){
res.writeHead(200,{'Content-Type':'text/plain'});
res.write(结果+“…”);
});
}).侦听(端口、主机);
更新1:
看起来这是gmail SMTP问题。我做了vmc文件myapp logs/stdout.log
,它显示:
{[Error:authorization.failed]代码:3,上一个:{[Error:
命令“cGludGVyZXN0”响应错误]
代码:2,,
smtp:'535-5.7.1请使用您的web浏览器登录,然后重试。有关详细信息,请访问\n535 5.7.1
4.
hn9sm22202393qab.8-gsmtp\r\n'},smtp:undefined}
我测试了另一个SMTP或不同的gmail帐户,它工作正常。所以这是我正在测试的这个gmail帐户特有的
然后我按照这个链接授权了这个应用程序
下一步
使用要授权访问您的应用程序登录
在接下来的十分钟内交代。谷歌将记住
应用程序登录后,将允许其访问您的
以后只要使用正确的密码,就可以使用该帐户
并尝试再次登录,但仍然没有运气。我原以为我应该在gmail内收到一封电子邮件以获得批准,但到目前为止没有:(
更新2:
我尝试使用另一个gmail帐户,并通过了批准Cloud Foundry进行应用程序访问的步骤。显然,对于不起作用的帐户,我错过了登录并批准Cloud Foundry的“10分钟窗口”。gmail从未回来要求再次批准。Miss是Miss:(我自己刚刚尝试将其部署到Cloud Foundry,它似乎很管用——尽管应用程序不向HTTP客户端返回任何内容可能不是好的做法(在上一个函数中尝试res.end而不是res.write) 您还应该使用VCAP_APP_端口而不是VMC_APP_端口,尽管这两种端口目前都可以使用 在我的例子中,我还创建了一个包含async和emailjs依赖项的package.json文件,并在本地测试和将应用程序推送到Cloud Foundry之前运行了npm install和npm shrinkwrap
您看到了什么错误?您是否检查了服务器端的日志(vmc logs命令)?如果您的应用程序不能与google gmail一起使用,请使用这两个链接 -允许不太安全的应用程序
-禁用应用程序和登录的show captha您实际上可以将主机和端口保留为localhost:3000,Cloud Foundry将在生产中覆盖它。我编辑了更多细节…感谢您的日志想法,先生。Cloud Foundry不是这里的错。