如何用JavaScript/jQuery将邮箱数组写入a href标签唤起默认邮箱发信
你遇到的问题核心是没有遵循mailto协议的链接格式要求,直接赋值数组肯定无法被识别为邮箱唤起链接,按以下步骤修改即可:
核心格式规则
唤起邮箱客户端的链接必须以mailto:为前缀,多个收件人地址之间用英文分号;分隔,Outlook完全兼容该标准格式。
修正后的完整代码
1. 邮箱选择部分(可额外加去重逻辑避免重复添加同一邮箱)
<td class="virtualTd" onclick="putThis(this)">{{ client.email }}</td> <script> const emails_list = [] function putThis(control) { const email = control.innerText.trim(); // 可选去重逻辑,避免重复添加同一个邮箱 if (!emails_list.includes(email)) { emails_list.push(email); } } </script>
2. 唤起邮箱按钮部分
<a href="#" id="sendEmail" class="btn btn-primary" onclick="popEmail()"> Email Client </a> <script> function popEmail() { // 存储到localStorage的逻辑保留 const jsonArr = JSON.stringify(emails_list); localStorage.setItem("array", jsonArr); const parsedArr = JSON.parse(localStorage.getItem("array")); const a = document.getElementById('sendEmail'); if (parsedArr.length === 0) { alert('请先选择需要发送的邮箱'); return; } // 核心修改:用分号拼接所有邮箱,加上mailto前缀 a.href = `mailto:${parsedArr.join(';')}`; // 可选扩展:默认填充主题、正文,需对内容做URL编码 // const subject = encodeURIComponent('默认邮件主题'); // const body = encodeURIComponent('默认邮件正文内容'); // a.href = `mailto:${parsedArr.join(';')}?subject=${subject}&body=${body}`; } </script>
注意事项
- 拼接后的链接格式为
mailto:aaa@xx.com;bbb@xx.com;ccc@xx.com,所有主流邮箱客户端包括Outlook都可以直接识别,不会被Django判定为普通URL - 如果邮箱地址包含特殊字符,建议使用
encodeURIComponent对每个邮箱地址单独编码后再拼接
内容的提问来源于stack exchange,提问作者Francisco Colina
相关产品推荐
相关产品推荐

