当使用mailto时,是否可以设置邮件的主题/内容?
function generate() {
var email = $('#email').val();
var subject = $('#subject').val();
var body = $('#body').val();
var mailto = 'mailto:' + email;
var params = {};
if (subject) {
params.subject = subject;
}
if (body) {
params.body = body;
}
if (params) {
mailto += '?' + $.param(params);
}
var $output = $('#output');
$output.val(mailto);
$output.focus();
$output.select();
document.execCommand('copy');
}
$(document).ready(function() {
$('#generate').on('click', generate);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="email" placeholder="email address" /><br/>
<input type="text" id="subject" placeholder="Subject" /><br/>
<textarea id="body" placeholder="Body"></textarea><br/>
<button type="button" id="generate">Generate & copy to clipboard</button><br/>
<textarea id="output">Output</textarea>
来源:https://dev59.com/8G035IYBdhLWcg3wGMHa#13415988特殊的hname“body”表示相关的hvalue是邮件的正文。 "body" hname应该包含邮件第一个text/plain正文部分的内容。 mailto URL主要用于生成实际上是自动处理内容(例如邮件列表的“subscribe”邮件)的短文本消息,而不是一般的MIME正文。
<a href="mailto:?body=%3Ca%20href%3D%22{{ scope.url }}%22%3E%3Cimg%20src%3D%22{{ scope.url }}%22%20width%3D%22300%22%20%2F%3E%3C%2Fa%3E">
HTML标签已进行URL编码。
你只需要一个简单的 HTML 文档。
<a href="mailto:email@example.com?subject=This is a subject&body=This is body">Send an email</a>
如果要动态使用mailto链接,请参考以下代码
const formConsultation = document.querySelector('form#form-consultation');
formConsultation.addEventListener("submit", function(evt) {
evt.preventDefault();
var targetobj = evt.target;
var actionUrl = targetobj.action;
var message = targetobj.message.value;
if (actionUrl && actionUrl != "#" && message) {
var newBodyMsg = subject = "";
var username = targetobj.username.value;
var useremail = targetobj.useremail.value;
if (targetobj.subject.value && targetobj.subject.value.trim().length > 0) {
subject = targetobj.subject.value;
}
if (username.trim().length > 0) {
newBodyMsg += "Hi! my name is " + username + ".";
}
if (useremail.trim().length > 0) {
if (newBodyMsg.length > 0) {
newBodyMsg += " & ";
}
newBodyMsg += "my email address is " + useremail + ".";
}
if (newBodyMsg.length > 0) {
newBodyMsg += "\n\n ";
}
newBodyMsg += message;
window.open(actionUrl + "?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(newBodyMsg));
}
});
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
<body>
<div class="container">
<form action="mailto:example@test.com" method="get" enctype="text/plain" class="form-consultation" id="form-consultation">
<div class="mb-3">
<label class="form-label">Name</label>
<input type="text" class="form-control" name="username" placeholder="Your Name" required>
</div>
<div class="mb-3">
<label class="form-label">Email</label>
<input type="email" class="form-control" name="useremail" placeholder="Your Email address" required>
</div>
<div class="mb-3">
<label class="form-label">Subject</label>
<input type="text" class="form-control" name="subject" placeholder="Subject" required>
</div>
<div class="mb-3">
<label class="form-label">Message</label>
<textarea cols="30" rows="3" class="form-control" name="message" placeholder="Message" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Send A Message</button>
</form>
</div>
</body>
或者使用 Jquery
$('#form-consultation').submit(function() {
event.preventDefault(); // this will prevent the default submit
var actionUrl = $(this).attr('action');
var message = $(this).find("textarea[name=message]");
if(actionUrl && actionUrl != "#" && message) {
var newBodyMsg = subject = "";
var username = $(this).find("input[name=username]").val();
var useremail = $(this).find("input[name=useremail]").val();
if(username.trim().length > 0) {
newBodyMsg += "Hi! my name is " + username + ".";
}
if(useremail.trim().length > 0) {
if(newBodyMsg.length > 0) {
newBodyMsg += " & ";
}
newBodyMsg += "my email address is " + useremail + ".";
}
if (newBodyMsg.length > 0) {
newBodyMsg += "\n\n ";
}
newBodyMsg += message.val();
window.open(actionUrl + "?subject="+ encodeURIComponent(subject) +"&body=" + encodeURIComponent(newBodyMsg));
}
return false;
});
注意:请在您的系统中运行上述代码。如果您尝试在此处(stackoverflow片段)运行代码,则无法正常工作,因为stackoverflow会阻止它。因此,请在本地系统中测试此代码。