Отправка почты в node.js с использованием nodemailer

node.js nodemailer

14431 просмотра

4 ответа

380 Репутация автора

Я пытаюсь отправить почту в node.js, используя Nodemailer, но он показывает некоторые ошибки, такие как { [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:password@smtp.gmail.com');

var mailOptions = {
  to: 'stevecameron2016@gmail.com',
  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");
});
Автор: Kevin Источник Размещён: 18.07.2016 08:09

Ответы (4)


17 плюса

183 Репутация автора

попробуйте https://github.com/nodemailer/nodemailer/issues/406

добавить tls: { rejectUnauthorized: false }в ваш транспорт конструктор опций

ps Не стоит публиковать адрес вашего почтового сервера, если он реальный

Автор: Narcotics Размещён: 18.07.2016 08:16

3 плюса

3603 Репутация автора

Решение

Чтобы разрешить отправку электронного письма через «менее безопасные приложения», перейдите по ссылке и выберите «Включить».

( Подробнее о менее безопасных приложениях)

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();
});
Автор: Yevhen Dubinin Размещён: 18.07.2016 09:03

0 плюса

1 Репутация автора

я тоже был в этой беде, то, что я сделал, это следующая строка кода:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

непосредственно перед созданием smpttransport

например, в вашем коде просто поместите это:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; var transporter = nodemailer.createTransport('smtps://something%40gmail.com:password@smtp.gmail.com');

Автор: user3985565 Размещён: 15.06.2017 06:20

0 плюса

1 Репутация автора

что @ user3985565 сказал правильно. Однако, если вы используете Gmail, вам также необходимо изменить некоторые настройки в вашей учетной записи Gmail. В частности, вам нужно «разрешить менее безопасные приложения» в вашей учетной записи Gmail. Для этого просто выполните следующие действия:

  1. проверить nodemailer как есть
  2. узел выдаст ошибку, а gmail отправит вам электронное письмо с предупреждением о безопасности, сообщающее, что «небезопасное приложение попыталось получить доступ к вашей учетной записи»
  3. в этом письме вам нужно нажать «проверить активность», а затем, на следующем экране, вы должны ответить «да»
  4. Следующие нажатия на следующих экранах - это «дополнительная информация», а затем «менее безопасные приложения».
  5. наконец вы увидите тумблер, и вы должны включить его.
Автор: Mario Mazzola Размещён: 23.09.2018 09:34
Вопросы из категории :
32x32