Gmailアカウントを使用して、SMTPアラートメッセージをユーザーのメールに送信していました。例、登録またはアカウントのブロックなど。私はnodemailerを使用しており、メールは単一の失敗なしに正常に送信されました。以下は私のコードです。
var nodemailer = require("nodemailer");
// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "[email protected]",
pass: "userpass"
}
});
// setup e-mail data with unicode symbols
var mailOptions = {
from: "Fred Foo ✔ <[email protected]>", // sender address
to: "[email protected], [email protected]", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world ✔", // plaintext body
html: "<b>Hello world ✔</b>" // html body
}
// send mail with defined transport object
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
// if you don't want to use this transport object anymore, uncomment following line
//smtpTransport.close(); // shut down the connection pool, no more messages
});
ちょうど昨日、Google for Businessアカウントに@mydomainアカウントにサインアップし、次にgmailを新しいgoogle for businessメールに置き換えます。
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "[email protected]",
pass: "userpass"
}
});
問題は、新しいアカウントでメールを送信しないことです。むしろコンソールにタイトルの付いたエラーを返しました。新しいアカウントのセキュリティを変更して、Googleコンソールから安全性の低いアプリをすべて許可しないようにしました。このエラーは何を意味していますか?また、メールのユーザー名とパスワードが使用されていることを考慮すると、それが最良のオプションですか?どうすれば最良の結果が得られますか?任意の助けいただければ幸いです。
お時間ありがとうございました。以下は私のために働くものです。
nodemailer.createTransport('smtps://user%myDomain.com:[email protected]');
に変わった
var smtpConfig = {
Host: 'smtp.gmail.com',
port: 465,
secure: true, // use SSL
auth: {
user: '[email protected]',
pass: 'pass@pass'
}
};
var transporter = nodemailer.createTransport(smtpConfig);
上記の例をドキュメント https://github.com/nodemailer/nodemailer で見つけました。 uとsmtpsリンクを考慮して、パスワードに@
記号が含まれている場合、これが起こったのではないかと思います。したがって、@記号がsmtps URLに干渉しないように、オブジェクトに分割することをお勧めします。これは私の推測です。それにもかかわらず、上記の解決策は私にとってはうまくいきます。さらに、Googleコンソールから安全性の低いアプリを許可することを忘れないでください。
Bluehostを使用するすべてのユーザーのために、Bluehostの構成を追加します。
_let transporter = nodemailer.createTransport({
Host: 'box1109.bluehost.com',
port: 465,
secure: true,
auth: {
user: '[email protected]',
pass: 'yourpassword'
}
});
_
verify()
メソッドを使用してオプションを確認できます。
_transporter.verify((err, success) => {
if (err) console.error(err);
console.log('Your config is correct');
});
_
このエラーが発生している場合は、Hostプロパティが正しく設定されていることを確認してください。
_console.log(transporter.options.Host);
_
このエラーに20分間費やして、Hostプロパティが未定義であることを確認しました(環境変数を使用して構成に移植していました)。