2016-08-10 21 views
6

Khi cố gắng để gửi một email từ một máy chủ sử dụng Node.js nodemailer, tôi nhận được lỗi sau:NodeMailer Không nhận Defined

ERROR: Send Error: No recipients defined 

Mã của tôi là như sau:

phía khách hàng:

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.'); 
     } 
    }); 

phía máy chủ:

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

}); 

Điều này phù hợp với tài liệu nodemailer và bắt tay SMTP luôn kết thúc thành công, vì vậy tôi biết rằng đây không phải là vấn đề với đối tượng transporter.

+0

Bạn đã kiểm tra sao 'mailData' var nhìn giống như trên phía máy chủ ngay trước khi chạy' phương pháp sendMail'? Nó giống như ở phía khách hàng? Mọi thứ đều ổn và loại lỗi này được ném khi trường 'tới' trống. – kkochanski

+0

@kkochanski bạn nói đúng. có một cái gì đó sai với ajax trên phía khách hàng, như khi tôi làm console.log (mailData.to) trên máy chủ tôi nhận được không xác định, do đó, vấn đề là thực sự với cuộc gọi ajax của tôi và không nodemailer chính nó. –

+0

Tôi trả lời, hy vọng rằng sẽ giúp! – kkochanski

Trả lời

6

Loại lỗi này xảy ra khi giá trị được gán cho khóa to trong đối tượng được gán cho phương thức sendMail trống. Như chúng ta thấy nó có nghĩa là một cái gì đó sai xảy ra và bạn không nhận được cùng một dữ liệu trên phía máy chủ, như bạn đã gửi trong máy khách.

Ngoài ra, tôi khuyên bạn nên kiểm tra xem bạn có đang truy cập biến tốt trên hành động phía máy chủ hay không. Có lẽ POST params có thể truy cập theo cách khác nhau - hãy kiểm tra điều này trong tài liệu khung của bạn.

Ví dụ trong HapiJS Tôi lấy params POST theo cách đó:

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

vâng tôi nhận ra điều này. Cảm ơn sự giúp đỡ của bạn. –

Các vấn đề liên quan