以下のコードはローカルで動作しますが、にデプロイすると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
、そしてそれは示しました:
{ [エラー: authentication.failed] コード: 3、前: { [エラー: コマンド 'cGludGVyZXN0' の応答が正しくありません] コード: 2、smtp: '535-5.7.1 Web ブラウザーでログインしてから、もう一度やり直してください。詳細については、\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に従ってアプリを承認しました
次のステップ
10 分以内にアカウントへのアクセスを許可するアプリケーションを使用してサインインしてください。Google はサインイン後にアプリケーションを記憶し、正しいパスワードを使用している限り、今後はアカウントへのアクセスを許可します。
もう一度ログインを試みますが、それでもうまくいきません。承認のためにgmail内でメールを受け取るはずだと思っていましたが、今のところ何もありません:(
更新 2:
別の gmail アカウントで試し、Cloud Foundry へのアプリ アクセスを承認する手順を実行したところ、機能しました。どうやら、機能しなかったアカウントについては、サインインして Cloud Foundry を承認するための「10 分ウィンドウ」を逃したようです。Gmail は戻ってくることはなく、再度承認するよう求められました。ミスはミスです:(