2016-07-18 9 views
2

Я пытаюсь отправить почту в Node.js с использованием Nodemailer, но он показывает ошибку, как { [Error: self signed certificate in certificate chain] code: 'ECONNECTION', command: 'CONN' }Отправка почты в Node.js с помощью nodemailer

Мой 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"); 
}); 
+2

Вы используете этот код со своего компьютера? Если это так, то, скорее всего, ваш антивирус действует как MITM и нарушает сертификат Gmail. При нормальных обстоятельствах вы никогда не должны получать ошибку «самоподписанный сертификат» при подключении к Gmail. Попробуйте отключить антивирус или запустить код на другой машине. – Andris

+0

отключить антивирус. это сработало для меня. – siddmuk2005

+0

whre я могу получить имя пользователя и пароль? –

ответ

-1

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

(More info о менее защищенных приложений)

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(); 
}); 
+0

Я включил менее безопасные приложения, и я использовал выше код, но он показывал ошибку, как '{[Ошибка: самоподписанный сертификат в цепочке сертификатов]:« ECONNECTION », команда:« CONN »}'. – Kevin

+0

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

+0

@ Spl2nky вы можете отредактировать ответ, если хотите –

7

попробовать https://github.com/nodemailer/nodemailer/issues/406

добавить tls: { rejectUnauthorized: false } в параметры конструктора транспортеров

пс Это не очень хорошая идея поз t адрес вашего почтового сервера, если он является реальным

+0

'var transporter = nodemailer.createTransport ('smtps: //something%40gmail.com: [email protected]', 'tls: {rejectUnauthorized: false}');' Я добавил так. Но это не работает. – Kevin

+0

Вы когда-нибудь читали документ? Если вы хотите установить дополнительные параметры, вам нужно 'createTransport (options)', 'options' - Object и' tls: {rejectUnauthorized: false} 'является одним из свойств этого объекта. – Narcotics

+1

@ Narcotics Большое спасибо. Ты спас свой день. –

0

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

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]');

 Смежные вопросы

  • Нет связанных вопросов^_^