📅  最后修改于: 2023-12-03 15:08:14.132000             🧑  作者: Mango
在 Web 开发中,有时需要在前端页面中使用 JavaScript 发送电子邮件。虽然直接在浏览器中发送邮件是不可能的,但可以使用 JavaScript 向后台服务器发送请求,由后台服务器来完成邮件发送的过程。
在使用 JavaScript 发送电子邮件之前,需要满足以下条件:
以下是一个基础的发送邮件的 HTML 页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>发送邮件</title>
</head>
<body>
<form action="" method="POST">
<label for="email">收件人:</label>
<input type="email" placeholder="请输入收件人邮箱" id="email" name="email"><br><br>
<label for="subject">主题:</label>
<input type="text" placeholder="请输入邮件主题" id="subject" name="subject"><br><br>
<label for="content">内容:</label><br>
<textarea rows="6" cols="50" placeholder="请输入邮件内容" id="content" name="content"></textarea><br><br>
<input type="submit" value="发送">
</form>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="./send-email.js"></script>
</body>
</html>
其中,send-email.js
文件就是我们用来实现邮件发送的 JavaScript 文件。
首先,我们需要获取表单中用户输入的邮件发送数据,并进行必要的验证。以下是一个基础的邮件数据获取与验证的函数:
function getEmailData() {
const email = $('#email').val();
const subject = $('#subject').val();
const content = $('#content').val();
if (!email) {
alert('请填写收件人邮箱!');
return null;
}
if (!subject) {
alert('请填写邮件主题!');
return null;
}
if (!content) {
alert('请填写邮件内容!');
return null;
}
return {
email: email,
subject: subject,
content: content,
};
}
该函数通过 jQuery 获取表单元素的值,如果用户未填写必填项,则用 alert
提示用户并返回 null
。否则,将获取到的邮件发送数据作为对象返回。
在获取并验证邮件发送数据之后,需要使用 AJAX 请求将数据发送给后台服务器。以下是一个基础的邮件发送请求的函数:
function sendEmail(data) {
$.ajax({
type: 'POST',
url: '/send-email',
data: data,
success: function (res) {
if (res.success) {
alert('邮件发送成功!');
} else {
alert('邮件发送失败:' + res.message);
}
},
error: function (err) {
alert('请求失败:' + err.statusText);
}
});
}
该函数使用 jQuery 的 AJAX 方法向后台服务器 /send-email
发送 POST
请求,并携带获取到的邮件发送数据。当请求成功时弹出提示框,显示邮件发送结果。当请求失败时同样弹出提示框,显示错误信息。
最后,我们需要使用 jQuery 将获取到的邮件发送数据绑定至发送按钮的点击事件中。以下是一个基础的邮件发送事件绑定的函数:
$(function () {
$('form').submit(function (event) {
event.preventDefault();
const data = getEmailData();
if (!data) {
return;
}
sendEmail(data);
});
});
该函数使用 jQuery 的 submit
方法对表单提交事件进行监听,在事件触发时使用 preventDefault
方法阻止表单的默认提交行为。然后,获取到用户填写的邮箱数据,并通过 sendEmail
函数将数据发送至后台服务器。
以上就是使用 JavaScript 发送电子邮件的基础流程。完整的代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>发送邮件</title>
</head>
<body>
<form action="" method="POST">
<label for="email">收件人:</label>
<input type="email" placeholder="请输入收件人邮箱" id="email" name="email"><br><br>
<label for="subject">主题:</label>
<input type="text" placeholder="请输入邮件主题" id="subject" name="subject"><br><br>
<label for="content">内容:</label><br>
<textarea rows="6" cols="50" placeholder="请输入邮件内容" id="content" name="content"></textarea><br><br>
<input type="submit" value="发送">
</form>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
function getEmailData() {
const email = $('#email').val();
const subject = $('#subject').val();
const content = $('#content').val();
if (!email) {
alert('请填写收件人邮箱!');
return null;
}
if (!subject) {
alert('请填写邮件主题!');
return null;
}
if (!content) {
alert('请填写邮件内容!');
return null;
}
return {
email: email,
subject: subject,
content: content,
};
}
function sendEmail(data) {
$.ajax({
type: 'POST',
url: '/send-email',
data: data,
success: function (res) {
if (res.success) {
alert('邮件发送成功!');
} else {
alert('邮件发送失败:' + res.message);
}
},
error: function (err) {
alert('请求失败:' + err.statusText);
}
});
}
$(function () {
$('form').submit(function (event) {
event.preventDefault();
const data = getEmailData();
if (!data) {
return;
}
sendEmail(data);
});
});
</script>
</body>
</html>
使用 JavaScript 发送电子邮件需要与后台服务器进行配合,这里的后台服务器可以是自己搭建的,也可以是第三方提供的。同时,还需要使用邮件发送 API 来实现邮件发送功能。如果是使用 Node.js 搭建后台服务器,可以使用 nodemailer
库来实现邮件发送。