尝试打开通过Nodemailer发送的图像附件时,为什么会收到504服务器错误?

问题描述

我一直在尝试找出如何通过React中的电子邮件表单发送上载的图像,以便当用户提交表单时,他们上载的图像直接发送到我的电子邮件地址。我最终能够使附件与电子邮件一起显示,但是当我尝试打开附件时,它会挂起几分钟,然后超时,并显示“服务器错误504”。我尝试了几种设置缓冲区的方法,但我不认为我正在正确实施代码。有人可以帮我弄清楚如何在附件中实际看到图像吗?我当前的代码,谢谢:

const express = require("express");
const bodyParser = require("body-parser");
const fileUpload = require("express-fileupload");
const nodemailer = require("nodemailer");
const app = express();
const creds = require("./config");
const cors = require("cors");

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
app.use(fileUpload());
app.use(cors());

app.post("/api/form",(req,res) => {
  nodemailer.createTestAccount((err,account) => {
    const htmlEmail = `
      <h3>Contact Details</h3>
      <ul>
        <li>
          Name: ${req.body.name}
        </li>
        <li>
          Email: ${req.body.email}
        </li>     
      </ul>
       <h3>Message</h3>
      <p>${req.body.message}</p>
    `;

    let transport = nodemailer.createTransport({
      host: "some.service.email",port: ***,auth: {
        user: creds.USER,pass: creds.PASS,},});

    let mailOptions = {
      from: "test@test.com",to: "receiveTest@test.com",replyTo: "test@test.com",subject: "Test Message",text: req.body.message,html: htmlEmail,attachments: [
        {
          filename: req.files.file.name,content: new Buffer.from(req.files.file.name,"base64"),],};

    transport.sendMail(mailOptions,(err,info) => {
      if (err) {
        res.json({
          status: "fail",});
      } else {
        res.json({
          status: "success",});
      }
    });
  });
});

const PORT = process.env.PORT || 3001;

app.listen(PORT,() => {
  console.log(`Server listening on port ${PORT}`);
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)