Nodejsとnodemailerでメールを送信しようとしていますが、うまくいきません。私はこのコードを持っています:
const config = require('../../config');
const http = require('http');
const nodemailer = require('nodemailer');
module.exports = {
sendMail: function (params) {
return new Promise((resolve, reject) => {
var transporter = nodemailer.createTransport({
//service: 'gmail', //I tried with this too
Host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: params.fromMail,
pass: params.fromPass
}
});
var mailOptions = {
from: params.fromMail,
to: params.toMailList,
subject: params.subject,
html: params.mailHtmlContent,
};
transporter.sendMail(mailOptions, function(err, info){
if (err) {
reject(err);
} else {
resolve(info.response);
}
});
});
}
};
このエラーが発生します:
{エラー:無効なログイン:535-5.7.8ユーザー名とパスワードが受け入れられません。詳細については、535 5.7.8 https://support.google.com/mail/?p=BadCredentials p6sm97493129wrx.50 --gsmtp at SMTPConnection._formatError(C:\ Users\Carlos\Desktop\Proyectos\nodeServer\node_modules\nodemailer\lib\smtp-connection\index.js:774:19)at SMTPConnection._actionAUTHComplete(C:\ Users\Carlos\Desktop\Proyectos\nodeServer\node_modules\nodemailer\lib\smtp-connection\index .js:1509:34)SMTPConnection._responseActions.Push.str(C:\ Users\Carlos\Desktop\Proyectos\nodeServer\node_modules\nodemailer\lib\smtp-connection\index.js:547:26)atSMTPConnection。 _processResponse(C:\ Users\Carlos\Desktop\Proyectos\nodeServer\node_modules\nodemailer\lib\smtp-connection\index.js:933:20)at SMTPConnection._onData(C:\ Users\Carlos\Desktop\Proyectos\nodeServer\node_modules\nodemailer\lib\smtp-connection\index.js:739:14)TLSSocket._socket.on.chunk(C:\ Users\Carlos\Desktop\Proyectos\nodeServer\node_modules\nodemailer\lib\smtp-connection\index.js:691:47)TLSSocket.emit(events.js:182:13)at addCh unk(_stream_読み取り可能.js:283:12)at表すユーザー名とパスワードは受け付けていません。詳細については、\ n535 5.7.8 https://support.google.com/mail/?p=BadCredentials p6sm97493129wrx.50 --gsmtp '、responseCode:535、command:' AUTHPLAIN '}をご覧ください。
「安全性の低いアプリ」に関するGmailアカウントの対応するパラメータを変更しました。 Gmail以外の別のアカウントでも試してみました。私はこれで試しました:
service: 'gmail',
そしてこれは接続のために:
Host: 'smtp.gmail.com',
port: 465,
secure: true,
ここスタックオーバーフローですべての「同様の質問」を読みましたが、他に何か必要なのか、何か悪いことをしているのかわかりません。 (もちろん、両方のアカウントのユーザー名とパスワードを確認しましたが、問題ありません)。
私は何が悪いのですか?
var nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',//smtp.gmail.com //in place of service use Host...
secure: false,//true
port: 25,//465
auth: {
user: '[email protected]',
pass: 'password'
}, tls: {
rejectUnauthorized: false
}
});
transporter.sendEMail = function (mailRequest) {
return new Promise(function (resolve, reject) {
transporter.sendMail(mailRequest, (error, info) => {
if (error) {
reject(error);
} else {
resolve("The message was sent!");
}
});
});
}
module.exports = transporter;
使用法:
//import transporter JS file
const mail = require('../utils/mail');
let htmlContent = `
<h1><strong>Contact Form</strong></h1>
<p>Hi,</p>
<p>${name} contacted with the following Details</p>
<br/>
<p>Email: ${email}</p>
<p>Phone: ${phone}</p>
<p>Company Name: ${companyName}</p>
<p>Message: ${message}</p>
`
let mailOptions = {
from: "Example <[email protected]>",
to: "[email protected]",
subject: "Mail Test",
text: "",
html: htmlContent
}
mail.sendMail(mailOptions)
.then(function (email) {
res.status(200).json({ success: true, msg: 'Mail sent' });
}).catch(function (exception) {
res.status(200).json({ success: false, msg: exception });
});
注:
Gmailを使用してメールを送信する前に、安全でないアプリがGmailにアクセスすることを許可する必要があります。これを行うには、Gmailの設定に移動します https://myaccount.google.com/lesssecureapps?pli=1
また、キャプチャを有効にします https://accounts.google.com/DisplayUnlockCaptcha
受け入れられた答えは私にはうまくいきませんでした。これらの4つのステップは実行しました:
管理者アカウントを使用して、Google管理コンソールにサインインします。
管理コンソールのダッシュボードから、[セキュリティ]、[基本設定]の順に移動します(下部にある[その他のコントロール]をクリックする必要がある場合があります)。
[安全性の低いアプリ]で、[安全性の低いアプリの設定に移動]を選択します。
サブウィンドウで、[すべてのユーザーの安全性の低いアプリへのアクセスを有効にする]ラジオボタンを選択します。