如何为sendmail创建或表单mailto触发的新邮件填充正文内容
方案1:直接提取表单内容填充邮件正文
这个方案无需操作本地文件,实现逻辑更简单,适配性更强,适合绝大多数场景。
- 实现逻辑:监听表单提交事件,遍历所有表单字段将值拼接为格式化的正文内容,编码后拼接到
mailto链接的body参数中,触发调用本地邮件客户端。 - 完整代码示例:
<form id="myForm"> <label>姓名:<input type="text" name="username" required></label><br> <label>联系邮箱:<input type="email" name="email" required></label><br> <label>反馈内容:<textarea name="content" rows="5" required></textarea></label><br> <button type="submit">提交并发送邮件</button> </form> <script> document.getElementById('myForm').addEventListener('submit', function(e) { // 阻止表单默认提交行为 e.preventDefault(); // 拼接表单内容为正文 let emailBody = "表单提交内容如下:\n\n"; const formData = new FormData(this); for (let [key, value] of formData.entries()) { emailBody += `${key}:${value}\n`; } // 编码内容避免特殊字符出错 const encodedBody = encodeURIComponent(emailBody); // 构造mailto链接,可自行补充收件人、主题参数 const mailtoLink = `mailto:recipient@example.com?subject=表单提交反馈&body=${encodedBody}`; // 触发邮件客户端 window.location.href = mailtoLink; }); </script>
注意:你可以自行修改mailto链接里的收件人地址、邮件主题为你需要的内容
方案2:读取本地TXT文件内容填充邮件正文
如果需要读取本地已保存的1KB大小的TXT文件内容直接放到邮件正文,可以用文件选择器配合FileReaderAPI实现,无需上传文件到服务器,全程在本地完成操作。
- 完整代码示例:
<form id="txtMailForm"> <label>选择本地TXT文件:<input type="file" id="txtFile" accept=".txt" required></label><br> <button type="submit">读取文件并生成邮件</button> </form> <script> document.getElementById('txtMailForm').addEventListener('submit', function(e) { e.preventDefault(); const fileInput = document.getElementById('txtFile'); const selectedFile = fileInput.files[0]; // 校验是否为TXT文件 if (selectedFile.type !== 'text/plain') { alert('请选择TXT格式的文件'); return; } // 读取文件内容 const reader = new FileReader(); reader.onload = function(e) { const txtContent = e.target.result; const encodedBody = encodeURIComponent(txtContent); // 构造mailto链接 const mailtoLink = `mailto:recipient@example.com?subject=TXT文件内容&body=${encodedBody}`; window.location.href = mailtoLink; }; reader.readAsText(selectedFile, 'UTF-8'); }); </script>
补充说明
- 两种方案都符合你要求的不添加附件、内容直接展示在邮件正文的需求
- 主流邮件客户端对
mailto链接的body参数长度支持普遍超过2KB,你需要填充的1KB内容完全可以正常适配 - 必须确保设备已经关联了默认邮件客户端(如Outlook、系统自带邮件应用等),才能正常触发邮件生成
内容的提问来源于stack exchange,提问作者xltrader100
相关产品推荐
相关产品推荐

