web-dev-qa-db-ja.com

nodemailerを使用してnode.jsでメールを送信する

Nodemailerを使用してnode.jsでメールを送信しようとしていますが、{ [Error: self signed certificate in certificate chain] code: 'ECONNECTION', command: 'CONN' }のようなエラーが表示されます。

私のnode.jsコードは

var express    =    require('express');
var app        =    express();
var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport('smtps://something%40gmail.com:[email protected]');

var mailOptions = {
  to: '[email protected]',
  subject: 'Hello ?', 
  text: 'Hello world ??', 
  html: '<b>Hello world ??</b>' 
};

transporter.sendMail(mailOptions, function(error, info){
  if(error){
     return console.log(error);
  }
  console.log('Message sent: ' + info.response);
});

var server     =    app.listen(8900,function(){
  console.log("We have started our server on port 8900");
});
6
Kevin

「安全性の低いアプリ」を介してメールを送信できるようにするには、 リンク に移動し、[オンにする]を選択します。

詳細 安全性の低いアプリについて)

var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');

var mailAccountUser = '<YOUR_ACCOUNT_USER>'
var mailAccountPassword = '<YOUR_ACCOUNT_PASS>'

var fromEmailAddress = '<FROM_EMAIL>'
var toEmailAddress = 'TO_EMAIL'

var transport = nodemailer.createTransport(smtpTransport({
    service: 'gmail',
    auth: {
        user: mailAccountUser,
        pass: mailAccountPassword
    }
}))

var mail = {
    from: fromEmailAddress,
    to: toEmailAddress,
    subject: "hello world!",
    text: "Hello!",
    html: "<b>Hello!</b><p><a href=\"http://www.yahoo.com\">Click Here</a></p>"
}

transport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    transport.close();
});
3
Yevhen Dubinin

試してください https://github.com/nodemailer/nodemailer/issues/406

追加 tls: { rejectUnauthorized: false }トランスポーターコンストラクターオプションへ

p.sメールサーバーのアドレスが本物の場合は、投稿することはお勧めできません。

17
Narcotics

私もこの問題に直面していました。私がしたことは次のコード行です。

_process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";_

smpttransportを作成する直前

たとえば、コードに次のように入力します。

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; var transporter = nodemailer.createTransport('smtps://something%40gmail.com:[email protected]');

0
user3985565

@ user3985565が言ったことは正しいです。ただし、Gmailを使用している場合は、Gmailアカウントのいくつかの設定も変更する必要があります。具体的には、Gmailアカウントで「安全性の低いアプリを許可する」必要があります。これを行うには、次の手順に従ってください。

  1. nodemailerをそのままテストします
  2. ノードはエラーをスローし、Gmailは「安全でないアプリがアカウントにアクセスしようとしました」ことを通知するセキュリティアラートメールを送信します
  3. このメールでは、「アクティビティの確認」をクリックする必要があります。次に、次の画面で「はい」を解除する必要があります。
  4. 次の画面で次にクリックするのは、「詳細情報」、次に「安全性の低いアプリ」です。
  5. 最後にトグルスイッチが表示され、オンにする必要があります。
0
Mario Mazzola