0
我遵循this stackoverflow指导将文件附加到表单。但不断得到一个内部错误500和错误400.我找不到任何类似任务的教程。如果你能陪我,我会非常感激!将文件附加到带有Nodemailer和Angular的表单
Server.js
var mailOptions = {
from: data.contactFrom, // sender address
contactEmail: data.contactEmail,
to: '[email protected]', // list of receivers
subject: "Request for a Quote from " + data.contactName, // Subject line
contactMsg: data.contactMsg, // plaintext body
attachments: [{ filename: req.file.originalname, content: req.file.buffer]};
console.log(mailOptions)
// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
if(error){ return console.log(error); }
console.log('Message sent: ' + info.response);
res.json(info);
});
Client.js
app.controller('QuoteCtrl', ['$scope','$http',
function($scope, $http) {
$scope.message = {};
$scope.sendMail = function() {
// //Include the file in AJAX request
var formData = new FormData();
Object.keys($scope.message).forEach(function(key) {
formData.append(key, $scope.message[key]);
});
$http.post('/send/sendQuote', formData, $scope.message, {
transformRequest: angular.identity, headers: {'Content-Type': undefined}}).
success(function(data) {
$scope.message = data;
});
$scope.message = {};
}
}]);
什么是可能的错误和任何改善让生活更轻松?
我使用了不同的版本,以发送电子邮件。 我想你使用的是Nodemailer包。我使用了Nodemailer的sendgrid插件:https://www.npmjs.com/package/nodemailer-sendgrid-transport。 这就是为什么我的代码与您的代码不同。如果您使用的是Sendgrid,我建议您切换到该版本,如果它仍然受支持。 我认为你的服务器无法发布表单,因为导致500错误的错误。 –