Nodemailerを使用してnode.jsサーバーからメールを送信しようとすると、次のエラーが発生します。
ERROR: Send Error: No recipients defined
私のコードは次のとおりです:
クライアント側:
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.');
}
});
サーバ側:
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();
});
});
これはnodemailerのドキュメントと一致しており、SMTPハンドシェイクは常に正常に終了するため、これはトランスポーターオブジェクトの問題ではないことがわかります。
この種のエラーは、to
メソッドに指定されたオブジェクトのキーsendMail
に割り当てられた値が空の場合に発生します。ご覧のとおり、これは何か問題が発生したことを意味し、クライアントで送信したのと同じデータをサーバー側で取得できません。
また、サーバー側のアクションで適切な変数にアクセスしているかどうかを確認することをお勧めします。おそらくPOST paramsは別の方法でアクセス可能です-フレームワークのドキュメントでこれを確認してください。
たとえばHapiJSでは、POST paramsを次のように取得します。
exports.someAction = function (request, reply) {
var postParams = request.payload
}