gpt4 book ai didi

javascript - 无法在没有警报的情况下使用 EmailJS 发送电子邮件

转载 作者:行者123 更新时间:2023-11-30 15:22:17 25 4
gpt4 key购买 nike

我正在使用以下代码片段试用 EmailJS.com 服务:HTML 部分:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Daily Report</title>
<script src="https://cdn.emailjs.com/dist/email.min.js"></script>
<script src="tst.js"></script>
<noscript>Please enable JavaScript.</noscript>
</head>
<body onLoad="today()">
<h1 id="today"></h1>
<hr>
<form onSubmit="draft()">
<fieldset>
<legend>Message</legend>
<textarea id="shout" rows="2" cols="97">TEST.</textarea><br>
<input type="submit" value="Email">
</fieldset>
</form>
</body>
</html>

JavaScript 部分:

var s = new Date().toDateString();
function today() {
emailjs.init("EMAILJSASSIGNED");
document.getElementById("today").innerHTML = s;
}
function draft() {
var m = s + "<br>";
m += document.getElementById("shout").value + "<br>";
emailjs.send("EMAILJS_service", "TEMPLATE", {"body":m});
//alert(m);
}

我发现仅当我添加 alert(m) 行时代码才有效(即,根据我的模板规范通过电子邮件发送)。似乎 alert 触发提交事件以执行 emailjs.send()。没有警报,emailjs.send 被“跳过”。我不明白为什么。

最佳答案

电子邮件没有发出警报的原因是一旦您提交表单,页面就会重新加载,浏览器没有机会完成 emailjs.send() 请求。

一个简单的解决方案是在 onSubmit 语句中添加“return false”,如下所示:

<form onSubmit="draft(); return false;">

虽然这会阻止提交表单,因此如果您确实需要将表单提交到服务器,则需要在 emailjs.send() 返回的 promise 得到解决后异步执行此操作。

您可以在此处阅读有关 emailjs.send() 语法的更多信息,包括 promise 和不 promise : https://www.emailjs.com/docs/api-reference/emailjs-send/

希望这对您有所帮助!

关于javascript - 无法在没有警报的情况下使用 EmailJS 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43555351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com