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

EmailJS无法正常工作,点击发送按钮无反应,请求排查代码问题

排查EmailJS无法发送邮件的问题

以下是代码中的关键问题及修复方案:

1. 未阻止表单默认提交行为

表单提交会触发页面刷新,直接中断EmailJS的异步请求。必须在提交事件中阻止默认行为:

function sendMail(event){
    event.preventDefault(); // 新增这行
    // ... 其余代码
}

2. then回调写法错误

你当前的写法会在调用emailjs.send后立刻弹出提示,不管请求是否成功。正确的做法是把提示放在回调函数里:

// 错误写法
emailjs.send(...).then(alert("Email Sent!!")); 

// 正确写法
emailjs.send(...).then(() => alert("Email Sent!!"));

3. 缺少EmailJS初始化

必须调用emailjs.init传入你的用户ID(在EmailJS后台"Account"页面可找到),否则无法发起合法请求:

emailjs.init("你的用户ID"); // 放在sendMail函数之前

4. 缺失错误捕获逻辑

没有错误处理的话,请求失败时你无法获取任何提示,添加catch来排查问题:

emailjs.send(...)
    .then(() => alert("Email Sent!!"))
    .catch(err => console.error("发送失败:", err));

5. 参数名需与EmailJS模板匹配

检查你在EmailJS后台创建的模板,确保parms里的键名和模板中的变量名完全一致。比如如果模板里用{{first}},那代码里就不能写成name: ...,要改成first: ...。

修正后的完整JavaScript代码

// 初始化EmailJS,替换为你的用户ID
emailjs.init("你的EmailJS用户ID");

function sendMail(event){
    event.preventDefault();

    let parms = {
        first: document.getElementById("first").value,
        last: document.getElementById("last").value,
        email: document.getElementById("emails").value,
        phone: document.getElementById("phone").value,
        message: document.getElementById("message").value,
    };

    emailjs.send("service_72h41ds", "template_aoove3j", parms)
        .then(() => alert("Email Sent!!"))
        .catch(err => console.error("发送失败:", err));
}

const form = document.getElementById("myform");
form.addEventListener("submit", sendMail);

额外检查项

  • 确认service_72h41ds服务ID和template_aoove3j模板ID与EmailJS后台完全一致
  • 检查EmailJS服务中的收件邮箱是否已完成验证
  • 打开浏览器控制台(F12),查看Network面板是否有EmailJS的请求,Console面板是否有报错信息

内容的提问来源于stack exchange,提问作者nn-code80

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:54:53