2016-08-10 28 views
6

Tanımlı nodemailer kullanarak node.js sunucusundan bir e-posta göndermeye çalışırken, aşağıdaki hatayı alıyorum:NodeMailer yok Alıcılar

ERROR: Send Error: No recipients defined 

Kodum aşağıdaki gibidir:

istemci tarafı:

var mailData = { 
     from: "[email protected]", 
     to: "[email protected]", 
     subject: "test", 
     text: "test email" 
    }; 

    $.ajax({ 
     type: 'POST', 
     data: mailData, 
     contentType: 'application/json', 
     url: 'http://localhost:8080/sendEmail', 
     success: function(mailData) { 
      console.log('successfully posted to server.'); 
     } 
    }); 

sunucu tarafı:

var nodemailer = require('nodemailer'); 

app.post('/sendEmail', function(mailData) { 

    var transporter = nodemailer.createTransport({ 
     service: 'gmail', 
     auth: { 
      user: '[email protected]', 
      pass: 'mypassword' 
     }, 
    }); 

    transporter.sendMail(mailData, function(error, info) { 
     if (error) { 
      console.log(error); 
      return; 
     } 
     console.log('Message sent'); 
     transporter.close(); 
    }); 

}); 

Bu, nodemailer belgelerine uygundur ve SMTP el sıkışması her zaman başarılı bir şekilde tamamlanır, bu yüzden bunun taşıyıcı nesne ile ilgili bir sorun olmadığını biliyorum.

+0

sunucu tarafında gibi nasıl 'mailData' var göz kontrol ettin sadece' sendMail' yöntemini çalıştırmadan önce: Yani o anlamda POST params almak HapiJS Örneğin

? İstemci tarafında olduğu gibi mi? Her şey iyi görünüyor ve "to" alanı boş olduğunda bu tür bir hata atılıyor. – kkochanski

+0

@kkochanski haklısınız. İstemci tarafında ajax ile ilgili bir sorun var, ben konsolide serverde konsol.log (mailData.to) yaptığım gibi undefined olsun, bu yüzden konu aslında ajax çağrısı ve nodemailer değil. –

+0

Cevapladım, umarım yardımcı olur! – kkochanski

cevap

6

sendMail yöntemine verilen nesnede to anahtarına atanan değer boşsa, bu tür bir hata oluşur. Gördüğümüz gibi, yanlış bir şey olduğu ve istemcide gönderdiğiniz gibi sunucu tarafında aynı verileri almadığınız anlamına gelir.

Ayrıca sunucu tarafı eyleminizde iyi değişkene erişip erişmediğinizi kontrol etmenizi öneririz. Muhtemelen POST paramları farklı şekilde erişilebilir - lütfen bunu çerçeve belgelerinizde kontrol edin.

exports.someAction = function (request, reply) { 
    var postParams = request.payload 
} 
+0

Evet, bunu anladım. Yardımın için çok teşekkürler. –