You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未配置后端,如何用JS实现着陆页表单文件上传并发送邮件?

纯JavaScript实现带文件上传的邮件发送方案

可以实现,不用写PHP后端。你现在用的window.Email.send(推测是EmailJS这类前端邮件服务)本身支持发送附件,只需要调整代码处理文件上传并传递给邮件服务即可,步骤如下:

1. 修改HTML表单,添加文件输入框

在你的表单里增加文件上传字段:

<input type="file" id="archivo" name="archivo" accept=".pdf,.doc,.docx,.jpg,.png" />

accept属性可限制允许上传的文件类型,按需调整即可。

2. 修改onSubmit函数,处理文件并发送附件

因为文件转base64是异步操作,需要把onSubmit改成异步函数,同时添加文件处理逻辑:

const {register, handleSubmit} = useForm();

// 辅助函数:将文件转为base64字符串
function fileToBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onload = () => resolve(reader.result);
    reader.onerror = err => reject(err);
    reader.readAsDataURL(file);
  });
}

const onSubmit = async () => {
  const nombre = document.getElementById('nombre').value;
  const mensaje = document.getElementById('mensaje').value;
  const fileInput = document.getElementById('archivo');
  const file = fileInput.files[0];

  // 构建可读性更好的邮件内容
  const emailContent = `
    <p><strong>Nombre:</strong> ${nombre}</p>
    <p><strong>Mensaje:</strong> ${mensaje}</p>
  `;

  // 处理附件
  let attachments = [];
  if (file) {
    const base64Data = await fileToBase64(file);
    attachments.push({
      name: file.name,
      data: base64Data.split('base64,')[1], // 移除base64前缀,只保留编码内容
      type: file.type
    });
  }

  const myForm = document.getElementById('form');

  try {
    await window.Email.send({
      SecureToken: '------------************---------',
      To: 'blablablaexample@gmail.com',
      From: "blablablaeeee@gmail.com",
      Subject: nombre,
      Body: emailContent,
      Attachments: attachments // 新增附件字段
    });
    alert("Consulta enviada!");
    myForm.reset();
  } catch (error) {
    alert(`Error al enviar: ${error.message}`);
  }
}

关键注意事项

  • 确认你使用的邮件服务(比如EmailJS)支持附件功能,部分免费版可能有文件大小限制(通常几MB以内)
  • 附件的格式需匹配服务要求:这里的Attachments数组结构是EmailJS的标准格式,若用其他服务需对应调整
  • 用async/await处理异步的文件转码操作,避免回调嵌套
  • 可以在表单里添加文件大小校验,提前拦截过大的文件,提升用户体验

内容的提问来源于stack exchange,提问作者Camila M. Teszkiewicz Novick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 06:43:11