Express NodeEmailer始终发送相同的响应,res.send()不工作

Express NodeEmailer始终发送相同的响应,res.send()不工作,express,nodemailer,Express,Nodemailer,如果电子邮件发送失败或成功,我将尝试发送自定义响应 服务器 路由器 .post'/发送电子邮件',功能请求,res{ 让senderEmail=req.body.email; let message=req.body.message; 让transporter=nodeEmailer.createTransport{ 主机:“mail.domain.com”, 港口:25, 安全:错误, 认证:{ 用户:contact@domain.com, 密码 }, tls:{ 安全:错误, ignoreT

如果电子邮件发送失败或成功,我将尝试发送自定义响应

服务器

路由器 .post'/发送电子邮件',功能请求,res{ 让senderEmail=req.body.email; let message=req.body.message; 让transporter=nodeEmailer.createTransport{ 主机:“mail.domain.com”, 港口:25, 安全:错误, 认证:{ 用户:contact@domain.com, 密码 }, tls:{ 安全:错误, ignoreTLS:没错, 拒绝:错误 } }; 让邮件选项={ 发件人:senderEmail, 致:'contact@domain.com', 主题:`标题', html:` ${message} ` }; transporter.sendmailoptions,错误,信息=>{ 如果错误{ res.send{ok:false,message:fail} }否则{ res.send{ok:true,message:success} } }; }; 客户

异步函数sendmailemail,message{ let response=获取/发送电子邮件{ 方法:邮寄, 标题:{ 接受:application/json, 内容类型:application/json }, body:JSON.stringify{email:email,message:message} } 让结果=等待响应; console.logresult//总是相同的响应 } 但是,无论电子邮件发送是否失败,服务器总是发送相同的响应


就我的一生而言,我无法找出我遗漏了什么?

因此,这里响应的不同部分将在响应的主体中,您必须使用response.json实际读取主体,才能获取并查看它。有关详细信息,请参阅

您的屏幕截图所看到的只是标题,这些标题与您发送的两个不同的响应没有区别

一个显示读取主体并将其解析为JSON的示例:

async function sendEmail(email, message) {

    let result = await fetch("/send-email", {
        method: "POST",
        headers: {
            Accept: "application/json",
            "Content-type": "application/json"
        },
        body: JSON.stringify({ email: email, message: message })
    }).then(response -> response.json());   // read the response body and parse it as JSON

    console.log(result);
    return result;
}

注意,您还应该在此处捕获错误,无论是在调用方中还是在该函数中,我不确定哪一个更适合您的情况。

是函数transporter.sendMail。。。封装在一个接收res的方法中?是的,它在路由器内部。post'/send email',function req,res{…};你有没有登录到这个函数来查看它是否被调用?是的,我确实收到了电子邮件。只是无法将响应从服务器发送回客户端。您可以向我们展示服务器上的整个请求处理程序吗?我有一种感觉,您没有向我们展示的东西导致了问题,就像您在同一个请求处理程序中向其他地方发送响应一样。