如何使用 JavaScript(无后端)将表单数据发送到邮箱

碧海醫心

碧海醫心

2026-06-14

592人浏览

原创

如何使用 JavaScript(无后端)将表单数据发送到邮箱

仅用纯 javascript 无法直接发送邮件(因浏览器安全限制),但可通过 emailjs 等第三方服务实现:注册账号获取密钥,引入 sdk,绑定表单并调用 sendform() 即可将用户输入安全提交至你的邮箱。

仅用纯 javascript 无法直接发送邮件(因浏览器安全限制),但可通过 emailjs 等第三方服务实现:注册账号获取密钥,引入 sdk,绑定表单并调用 sendform() 即可将用户输入安全提交至你的邮箱。

在现代 Web 开发中,许多初学者误以为 JavaScript 可以像 PHP 那样直接连接 SMTP 发送邮件——但这是不可能的。浏览器环境出于安全考虑,严格禁止前端脚本直接访问邮件服务器或执行网络请求到任意域名(CORS 限制)。因此,“纯 JS 发邮件”本质上是指借助可信的云邮件中继服务,由其在服务端完成真实邮件投递。

目前最成熟、免费且专为前端优化的方案是 EmailJS。它提供简洁的 SDK、无需自己部署后端、支持模板化邮件,并对个人项目免费(每月 200 封额度足够学习与小规模使用)。

✅ 快速上手三步走

  1. 注册并配置 EmailJS

    Java JDK 25
    Java JDK 25

    Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。

    下载
    • 访问 EmailJS 官网 → 免费注册账号
    • 登录后进入 Dashboard → 添加服务(如 Gmail / Outlook / SMTP)
    • 创建邮件模板(Template),例如 template_contact,设置收件人邮箱(即你的邮箱)、主题和 HTML 内容(可自动插入 {{name}}、{{email}} 等字段)
    • 记下三个关键 ID:
      • User ID(首页右上角“User Settings”中)
      • Service ID(在 “Email Services” 列表中)
      • Template ID(在 “Email Templates” 中)
  2. 更新 HTML 表单结构
    移除无效的 action="form.js"(.js 文件不能作为 form action),并为表单添加唯一 id,确保各字段 name 属性与模板中变量名一致:


⚠️ 注意:原代码中含 password 字段——切勿通过 EmailJS 或任何前端方式传输密码!密码属于敏感凭证,必须由后端在 HTTPS 环境下加密处理。此处应移除该字段,或替换为“确认密码”等非敏感校验逻辑。

  1. 编写发送逻辑(JS)
    在页面底部或 <script> 标签中引入 EmailJS SDK 并初始化:</script>
<script src="https://cdn.emailjs.com/dist/email.min.js"></script><script>
  // 替换为你自己的 ID(务必保密,但用于前端时无需隐藏)
  emailjs.init("YOUR_USER_ID_HERE");

  document.getElementById("contact-form").addEventListener("submit", function (e) {
    e.preventDefault(); // 阻止页面刷新

    // 自动收集所有带 name 属性的字段(无需手动取值)
    const formData = new FormData(e.target);

    emailjs.sendForm("YOUR_SERVICE_ID", "YOUR_TEMPLATE_ID", e.target)
      .then(() => {
        alert("✅ Message sent! Check your inbox.");
        e.target.reset(); // 清空表单
      })
      .catch((err) => {
        console.error("❌ Email failed:", err);
        alert("Sorry, sending failed. Please try again.");
      });
  });
</script>

? 安全提示与最佳实践

  • 不要硬编码敏感信息:虽然 EmailJS 的 User ID 是公开的(类似 API key),但仍建议避免在 GitHub 公开仓库中明文暴露;生产环境可结合构建工具做环境变量注入(如 Vite 的 import.meta.env)。
  • 验证与防护:EmailJS 支持 CAPTCHA 集成(推荐启用),防止机器人刷信;你也可在前端添加简单邮箱格式校验(type="email" 已提供基础检查)。
  • 错误处理不可少:.catch() 块必须存在,否则失败时用户无感知;建议配合加载状态(如按钮禁用 + spinner)提升体验。
  • 替代方案参考:若需更高定制性,也可考虑 FormspreeNetlify Forms(需托管在对应平台),但 EmailJS 对纯静态站点兼容性最佳。

通过以上步骤,你就能在不写一行 PHP 或 Node.js 的前提下,让表单真正“发出邮件”——本质是前端发起请求 → EmailJS 云服务接收 → 后端投递至你的邮箱。这正是现代 Jamstack 架构推崇的“前端专注交互,复杂逻辑交由专业服务”的典型实践。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java javascript 表单提交

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1111

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2132

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2654

10

js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

2434

5

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

2023.07.04

720

3

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

2023.07.04

2227

6

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

638

4

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

1187

5

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

2023.09.04

2134

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 11.1万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.1万人学习