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
相关产品推荐
相关产品推荐

