有没有办法解决从html到node js的'POST internal error 500'



问候语堆栈溢出社区,我是:

全名:Collymore Dawids国家:纳米比亚,Swakopmund

经验我对编程和服务器的工作方式还相当陌生。

问题我正在尝试使用jQuery发送表单数据(html(,以使用mailGun API 表达到我的个人电子邮件

前端是相当坚固没有问题,它唯一的后端我认为!!

server.js

const express = require('express');
const app = express();
const sendMail = require('./mail.js');
app.use(express.static('public'));
app.use(express.json())
app.post('/email', (req,res) =>{
//TODO
// send email here
const {fullName,phone,email,subject,message} = req.body; // from jquery to nodejs
console.log('Data:',req.body)
sendMail(fullName,phone,email,subject,message, function(err,data){
if(err){
res.status(500).json({message: 'Internal error'});
}else{
res.json({message: 'Email sent...!!'})
}
});
})
// get the html
app.get('/', (req,res) =>{
res.sendFile(path.join(__dirname,'/public/Form/form.html'));
})

HTML表单

<form action="/email" method="POST" class="contact-form">
<h2>ContactUs</h2>
<input type="text" id="Fullname" placeholder="Full Name" value="Some 
text data" name="FullName" ><br>
<input type="number" id="phone" placeholder="Phone" value="0813405085" name="Phone"><br>
<input type="email" id="email" placeholder="Email" value="erroldavids33@outlook.com" 
name="Email"><br>
<input type="text" id="subject" placeholder="Subject" value="HI There!" name="Subject"><br>
<textarea  id="message" placeholder="message" cols="30" rows="10" name="Message" > 
</textarea> 
<br>
<input type="submit" id="send-btn" value="Send Message">
</form>

JQuery{3.4.1}

<script type="text/javascript">
$('form').on('submit', (e) =>{
e.preventDefault();

const fullName = $('#Fullname').val().trim();
const phone = $('#phone').val().trim();
const email = $('#email').val().trim();
const subject = $('#subject').val().trim();
const message = $('#message').val().trim();
const data = {
fullName,
phone,
email,
subject,
message
};
$.post('/email', data, function(){
console.log('Server received our data')
})
})
</script>

Mail.js(负责处理apiKeys/域并发送邮件(

const nodemailer = require('nodemailer');
const mailGun = require('nodemailer-mailgun-transport');
const config = require('./config.js');
// Credentials MailGun
const auth ={
auth:{
api_key: config.apiKey,
domain: config.baseUrl
}
};
const transporter = nodemailer.createTransport(auth);
const sendMail = (fullName,phone,email,subject,message,cb) =>{
const mailOptions = {
fullName,
phone,
from:'Collymore <erroldavids22@gmail.com>',
email,
subject,
message
};
transporter.sendMail(mailOptions, function(err, data){
if(err){
cb(err,null);
}else{
cb(null, data);
}
});
}
module.exports = sendMail;

每当我从浏览器访问server.js(如"localhost:5000"(并尝试将html表单的数据发送到我的电子邮件时。

浏览器的响应返回`POST localhost:5000/email500内部错误

我很抱歉用正午的方式说明了我的问题,语法也太了

只传递auth参数是可能的,但需要调用nodemailer mailgun传输(已导入但未使用(:

const transporter = nodemailer.createTransport(mailGun(auth));

最新更新