You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mailto协议发送含非执行JS脚本邮件时&后内容截断如何修复

问题根因

&是URL查询参数的默认分隔符,mailto链接的参数规则为mailto:收件人地址?subject=邮件主题&body=邮件正文,当正文内容自带&时,浏览器会将其识别为mailto参数的分隔标记,&后的内容会被当成独立的URL参数处理,不会被纳入邮件正文,因此出现截断。

解决方案

所有插入mailto链接的参数内容,包括邮件主题、邮件正文,都需要先通过URL编码转义特殊字符,避免和mailto本身的参数规则冲突。JS可直接使用内置的encodeURIComponent()方法完成编码。

正确实现代码
// 定义原始内容
const script = `<script id="myID">var script = document.createElement("script");script.src="script-to-inject.js?id=myID&type=0&name=Name&size=120";document.head.appendChild(script); </script>`;
const email = "接收方邮箱地址";
const subject = "你的邮件主题";
const body = "FewWords" + script;

// 编码后拼接mailto链接
window.location.href = "mailto:" + email 
  + "?subject=" + encodeURIComponent(subject) 
  + "&body=" + encodeURIComponent(body);
补充说明
  • encodeURIComponent会自动将&转义为%26、双引号转义为%22、空格转义为%20,所有特殊字符都会转为URL安全格式,不会触发参数截断。
  • 主流浏览器和邮件客户端对mailto链接的长度限制通常在2000字符以内,如果需要发送的内容过长,建议更换为附件形式发送,避免超长导致内容丢失。

内容的提问来源于stack exchange,提问作者Amaury Laroze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:27:02