2016-03-04 4 views
3

Я создаю проект и следую всем этапам, написанным в ответ Nodemailer/Gmail - What exactly is a refresh token and how do I get one?, но я ошибаюсь.Ошибка при отправке почты с помощью Nodemailer

Я использую следующий код:

 var smtpTransport = nodemailer.createTransport("SMTP", { 
     service: "Gmail", 
     connectionTimeout : "7000", 
     greetingTimeout : "7000", 

     auth: { 
     XOAuth2: { 
      user: "", 
      clientId: "", 
      clientSecret: "", 
      refreshToken: "" 
     } 
     } 
    }); 


    var mailOptions = { 
     from: "", 
     to:usersEmailId, 
     subject: 'subject', 
     html: 'string Of Html' 
    } 

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

             smtpTransport.close(); 
            }); 

Получение следующие ошибки

{ [Error: Connection timeout] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', stage: 'init' } 
{ [Error: Connection timeout] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', stage: 'init' } 

{ [XOAUTH2Error: invalid_client] name: 'XOAUTH2Error', stage: 'auth' } 
{ [XOAUTH2Error: invalid_client] name: 'XOAUTH2Error', stage: 'auth' } 

и мой второй вопрос, как отправить вложение. У меня есть только имя файла и url файла.

+0

Время, чтобы дать отзыв? –

ответ

1

Используйте это потому, что путь неправильно в nodemailer док. это проблема в nodemailer use filepath, это работает

attachments : [ 
    { // file on disk as an attachment 
     filename: 'name Of File',, 
     filePath : 'url of file' // stream this file 
    }, 
], 

alternatives : [ 
    { // file on disk as an attachment 
     filename: 'name Of File', 
     filePath : 'url of file' // stream this file 
    }, 
], 
1

Я написал оберточный модуль около Номенклатурный/nodemailer-smtp-transport/xoauth2.

Взгляните на эту Gist, если помогает:

// USAGE 
// response is coming (in my case) from REDIS 
var constants = { 
    stmp_host: 'smtp-relay.gmail.com', 
    user: resp.SUPORTE_MAIL, 
    user_name: resp.SUPORTE_NAME, 
    clientId: resp.OAUTH_CLIENT_ID, 
    clientSecret: resp.OAUTH_CLIENT_SECRET, 
    refreshToken: resp.OAUTH_REFRESH_TOKEN 
}; 

var Mailer = require('./my-mailer.js'); 
var mailer = new Mailer(constants); 

mailer.createTransporter().then(function(){ 
    var send_info = { 
    subject: 'A test!', 
    html: 'some<br>formatted <strong>text</strong>', 
    to_name: 'Some Name', 
    to_email: '[email protected]' 
    }; 
    return mailer.getMailObject(send_info); 
}).then(function(mail_obj){ 
    mailer.sendMail(mail_obj).then(function(info) { 
    console.info('sent to: ', info); 
    process.exit(); 
    }).catch(function(err) { 
    console.info('error: ', err); 
    }); 
}); 
Смежные вопросы