无法使用 JavaScript 发送电子邮件
Unable To Send Emails With JavaScript
本文关键字:电子邮件 JavaScript 更新时间:2023-09-26
Stack Overflow上的一个旧线程讨论了如何使用JavaScript填写mailto电子邮件:
使用 Javascript 发送电子邮件
我对应用该技术感兴趣,但无法使其工作。
在下面的代码中,当我在 makecontact() 方法中在返回 false 时设置断点并查看它记录的 URL,它看起来不错。
但是浏览器不会打开电子邮件客户端。
如果我在"提交"按钮的 href 中对相同的 URL 进行硬编码,则它会启动电子邮件客户端。
为什么设置 href 不起作用?
答:这是错误的href。
固定版本:
<!-- TODO: Validate name and text fields and don't allow submit until they are valid. Limit total mailto URL length to 2000. -->
<form name="contact">
<br/>Reason for contact:
<br/>
<input type="radio" name="reason" value="Product Inquiry/Presales Questions" checked="checked"/>Product Inquiry/Presales Question<br/>
<input type="radio" name="reason" value="Support/Warranty"/>Support/Warranty<br/>
<input type="radio" name="reason" value="Feedback"/>Feedback<br/>
<input type="radio" name="reason" value="Other"/>Other<br/>
<input type="text" name="name" id="name"/>Your name:</div>
<textarea name="contacttext" rows="20" cols="60" id="contacttext"></textarea>
<button id="submit">Submit</button>
</form>
<script type="text/javascript" id="contactjs">
<!--
var submit = document.getElementById("submit");
function getreason() {
var radios, i, radio;
radios = document.getElementsByName("reason");
for (i = 0; i < radios.length; i += 1) {
radio = radios[i];
if (radio.checked) {
break;
}
}
return encodeURIComponent(radio.value);
}
function makecontact(e) {
var subject, name, text;
subject = getreason();
name = document.getElementById("name").value;
text = document.getElementById("contacttext").value;
body = "From: '" + name + "', Content: '" + text + "'";
body = encodeURIComponent(body);
document.location.href = "mailto:contact@analogperfection.com?Subject=" + subject + "&Body=" + body;
console.log(document.location.href);
e.preventDefault();
return false;
}
if (submit.addEventListener) {
submit.addEventListener("click", makecontact, true);
} else if (form.attachEvent) {
submit.attachEvent("onclick", makecontact);
} else {
submit.click = makecontact;
}
//-->
</script>
</div>
body = "From: '
" + name + "
', Content: '
" + text + "
'";
这不是有效的 JavaScript。这将导致"未终止字符串常量"错误。试试这个:
body = "From: ''n" + name + "'n', Content: ''n" + text + "'n'";
您有两个主要问题:
-
button
元素没有href
(HTML4,HTML5)。设置一个不会做任何事情。在提交处理程序结束时,您应该改为设置document.location.href
:document.location.href = "mailto:contact@analogperfection.com?Subject=" + subject + "&Body=" + body;
-
在 JavaScript 中,字符串中不能有文字换行符。请改用
'n
:body = "From: ' 'n" + name + " 'n', Content: ' 'n" + text + " 'n'";
还要注意...
-
您应该在事件处理程序中接受事件对象,并调用
event.preventDefault()
而不是仅从事件处理程序返回 false,以阻止提交表单。 -
没有称为
resume
的函数,但如果addEventListener
和attachEvent
都不存在,您正在使用它。
相关文章:
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- javascript中添加验证电子邮件的问题
- Javascript/Ajax:通过点击按钮检查有效的电子邮件和电话号码
- 如何通过javascript在我的公司域上发送电子邮件
- JavaScript通过SMTP验证电子邮件
- 处理HTML类型'电子邮件''url'使用JavaScript
- 使用Javascript或SQL Server将Outlook电子邮件发送到SQL表
- 使用HTML/Javascript表单使用ActiveXObject创建带有嵌入图像的outlook电子邮件
- 如何在不更改Javascript页面的情况下访问用户输入的电子邮件
- 如何使用JavaScript将链接文本添加到电子邮件中
- Javascript电子邮件验证不起作用
- Javascript中的电子邮件验证检查
- 匹配Javascript中的几种不同的电子邮件地址格式
- 使用自定义 SMTP 通过 JavaScript 发送电子邮件
- 使用 Javascript 进行电子邮件地址验证在 ASP.net 中不起作用
- Excel Web Services 电子邮件 JavaScript 工作表
- 如何解析 DOM 以获取电子邮件 Javascript
- 在控制台上发送电子邮件javascript错误
- 如何:发送电子邮件javascript后关闭窗口
- 验证电子邮件 JavaScript:当电子邮件不正确时显示叉号/当电子邮件正确时显示勾号