mailto: 链接用于调用系统默认邮件客户端并预填收件人、主题、正文、抄送(cc)、密送(bcc)等参数,须用 ? 开始、& 分隔,且内容需 URL 编码;不支持任意参数,仅限标准字段。

href="mailto:" 的作用是触发用户设备默认邮件客户端,预填收件人地址(可附带主题、正文等),本质是调用系统级协议而非跳转网页。
mailto: 链接能填哪些参数?
只支持有限的 URL 查询参数,且必须用 ? 开始、& 分隔(注意 HTML 中要写成 & 而非 &):
-
to:必填收件人,多个邮箱用英文逗号分隔,如mailto:admin@example.com,dev@example.com -
subject:URL 编码后的邮件主题,空格需转为%20,中文必须编码(如subject=%E4%BD%A0%E5%A5%BD) -
body:URL 编码后的正文,换行用%0D%0A(即\r\n) -
cc和bcc:抄送与密送,同样支持多地址逗号分隔
错误示例:mailto:user@domain.com?subject=反馈&body=你好\n请查收 —— \n 不会被识别,必须用 %0D%0A;未编码的中文会导致链接截断或乱码。
为什么点击后没反应或打开空白邮件?
常见原因不是代码写错,而是环境限制:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
- 浏览器无默认邮件客户端(如 Chrome 在 macOS 上未设置 Mail.app,或 Windows 未配置 Outlook/Mail)
- 用户禁用了协议处理(例如 Edge 设置中关闭了“允许网站启动应用”)
-
mailto:链接被 JavaScript 拦截但未正确return false,导致链接被当作普通跳转丢弃 - 在 iframe 或 sandboxed 环境中,部分浏览器会直接忽略
mailto:(尤其 iOS Safari)
调试建议:直接复制完整 href 值到地址栏回车,看是否唤起邮件客户端——这能排除 HTML 渲染或 JS 干扰问题。
mailto: 和表单提交比,适合什么场景?
它不是替代联系表单的方案,而是轻量级、零后端、强依赖用户本地环境的快捷入口:
- 适合内部系统、内网页面、演示页等无需留痕、不需结构化收集的场景
- 不适合需要验证邮箱格式、防机器人、存档、自动回复或附件上传的业务流程
- 移动端点击时,iOS 会优先调用 Mail,Android 则取决于用户默认设置(Gmail/Outlook/三星邮件等),行为不统一
- SEO 无意义,爬虫不会解析
mailto:,也不计入外链统计
真正容易被忽略的一点:没有 fallback 机制。一旦用户没配邮件客户端,a 标签就彻底失效,连提示都做不到——所以生产环境若必须用,至少加个 title 提示“请用邮件客户端打开”,或配合 JS 检测 navigator.canLaunch('mailto:')(仅部分 Chromium 浏览器支持)做降级。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










