web-dev-qa-db-ja.com

nodemailerの使用時にユーザー名とパスワードが受け入れられませんか?

これは私のsettingControllerです:

var sendSmtpMail = function (req,res) {
  var transport = nodemailer.createTransport({
  service:'gmail',
   auth: {
             user: "[email protected]",
             pass: "qwerr@wee"
        }
   });
   var mailOptions = {
        from: "[email protected]", 
        to:'[email protected]', 
        subject: req.body.subject+"nodejs working ?", 
        text: "Hello world ?",  
    }
    transport.sendMail(mailOptions, function(error, response){
      if(error){
         res.send("Email could not sent due to error: "+error);
         console.log('Error');
       }else{
         res.send("Email has been sent successfully");
         console.log('mail sent');
      } 
  }); 

郵便配達員で私はそのようなエラーを受け取りました:

エラーのためメールを送信できませんでした:

Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8  https://support.google.com/mail/?p=BadCredentials g7sm64435626pfj.29 - gsmtp
14
uma raja

まず、 安全性の低いアプリがアカウントにアクセスすることを許可する必要があると思う Googleアカウントの設定-デフォルトではこの設定はoffそして、あなたは単にそれを回すだけですon

次に、次のスクリプトを使用して、gmailアカウントからメールを送信し、yahooおよびhotmailアカウント。

const nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
    Host: 'smtp.gmail.com',
    port: 587,
    secure: false,
    requireTLS: true,
    auth: {
        user: '[email protected]',
        pass: 'your.password'
    }
});

let mailOptions = {
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Test',
    text: 'Hello World!'
};

transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
        return console.log(error.message);
    }
    console.log('success');
});

たとえば、前のコードをsend-email.jsに入れた場合、ターミナルを開いて次のように記述します。

node send-email

コンソールに-successが表示されるはずです。メールが正常に送信されたか、nodemailerによってエラーメッセージが返されたか

最初に設定を行うことを忘れないでください- 安全性の低いアプリがアカウントにアクセスすることを許可 .

このコードがお役に立てば幸いです。がんばろう!

21
codtex

Googleアカウントで2要素認証を有効にしている場合、通常のパスワードを使用してプログラムでGmailにアクセスすることはできません。アプリ固有のパスワードを生成し、実際のパスワードの代わりに使用する必要があります。

手順:

  • Googleアカウントにログインします
  • [アカウント]> [サインインとセキュリティ]> [アプリのパスワード]に移動します
  • (もう一度サインインして、あなたであることを確認します)
  • [アプリの選択]([パスワードとサインイン方法]ボックス)までスクロールし、[その他(カスタム名)]を選択します。
  • このアプリパスワードに名前を付けます。 「nodemailer」
  • 生成を選択
  • 長く生成されたパスワードをコピーし、実際のGmailパスワードの代わりにNode.jsスクリプトに貼り付けます。 (スペースは必要ありません。)

スクリプトは次のようになります。

var transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: '[email protected]',
    pass: 'YOUR-GENERATED-APP-PASSWORD'
  }
});

これが誰かの助けになることを願っています。

10
dcdc

Gmailサービスを使用しているため、メールはGmailにある必要があります。

var transport = nodemailer.createTransport({
service:'gmail',
 auth: {
             user: "[email protected]",
             pass: "qwerr@wee"
        }
    });
var mailOptions = {
        from: "[email protected]", 
        to:'[email protected]', 
        subject: req.body.subject+"nodejs working ?", 
        text: "Hello world ?",  
    }
transport.sendMail(mailOptions, function(error, response){
    if(error){
         res.send("Email could not sent due to error: "+error);
         console.log('Error');
    }else{
         res.send("Email has been sent successfully");
         console.log('mail sent');
    } 
}); 
0
trungducng