2016-06-15 9 views
1

Итак, я использую cloud9 как IDE, nodejs, express и [email protected] и nodemailer-sendgrid-transport. Вот мой код:nodemailer [Ошибка: не указан какой-либо транспортный метод]

var nodemailer=require('nodemailer'); 
var sgTransporter = require('nodemailer-sendgrid-transport'); 
var options={ 
    auth: { 
     api_user: "xxx", 
     api_pass: "xxx" 
    } 
}; 
var client = nodemailer.createTransport(sgTransporter(options)); 

var sendMail=function(emailTo, subject, html, fn){ 
    var mailOptions={ 
     from:'xxx', 
     to:emailTo, 
     subject:subject, 
     html:html 
    }; 

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

А вот функция Sendmail вызывается:

router.get('/verifyEmail', function(req,res){ 
    if(req.isAuthenticated()) { 
     var subject='Verify your email address'; 
     var link="https://myapp-myuser.c9users.io/verify/:"+req.user._id; 
     var html='Hello,<br> Please Click on the link to verify your Account.<br><a href='+link+'>Click here to verify</a>'; 
     console.log('Sending verification email to: '+req.user.email); 
     sendMail(req.user.email,subject, html,function(error, response){ 
      if (error){ 
       return res.status(400).json({error:error}); 
      } 
      return res.status(200).json(response); 
     }); 
    } 
}); 

Но электронная почта не отправляется ... Я получаю следующее сообщение об ошибке: [Error: No transport method defined]

У меня есть пробовал много разных решений. Как я это вижу, я делаю то же самое, что и в этом примере: https://sendgrid.com/blog/sending-email-nodemailer-sendgrid/ Возможно, это проблема cloud9? Я также пробовал с учетной записью gmail. Те же ошибки, позволив небезопасные приложения ...

EDIT: Хорошо, я модернизировал nodemailer до версии 2.4.2 и новой ошибки выкинуты ... [Error: The provided authorization grant is invalid, expired, or revoked]

ответ

0

В большинстве случаев ... это мелочи, черт возьми, я застрял в этом ... Проблема заключалась в следующем:

auth: { 
    api_user: "xxx", 
    api_pass: "xxx" 
} 

Должно быть написано так:

auth: { 
    api_user: "xxx", 
    api_key: "xxx" 
} 

это и nodema iler's version ...