根本原因是系统未将 Outlook 设为默认邮件客户端,需在 Windows 设置或 macOS 系统设置中手动指定;同时 mailto: 链接须严格编码参数,避免空格、中文未转义,并注意旧版 Outlook 对长文本和 cc/bcc 的兼容限制。
mailto: 链接 Outlook 没反应?先看系统默认邮件客户端根本原因不是 HTML 写错了,而是 Windows 或 macOS 没把 Outlook 设为默认邮件应用。浏览器点击 mailto: 会调用系统级默认邮件客户端,如果注册的是 Windows 邮件、Thunderbird 甚至空白(未设置),Outlook 就完全收不到请求。
mailto → 改为 Microsoft Outlook」.eml 文件,看是否由 Outlook 打开mailto: 链接写法必须严格合规,参数空格和特殊字符要编码
哪怕一个空格或中文没编码,Outlook 就会静默失败(不报错,也不弹窗)。常见错误包括直接拼接中文收件人、未对 subject 或 body 中的换行/引号做 URL 编码。
mailto:admin@example.com ✅,mailto:admin @example.com ❌& 连接(HTML 中要写成 &),且值必须 encodeURIComponent() 编码body 中使用未编码的换行符 —— Outlook 识别 %0D%0A(CRLF),纯 \n 会被忽略联系技术支持
能力Outlook 2016 及更早版本对长 body、嵌套 URL、HTML 实体支持极弱;Outlook for Microsoft 365(新版)相对稳定,但仍不支持 cc/bcc 中含中文或未编码内容。
body 超过约 2000 字符,旧版 Outlook 直接截断或丢弃整个参数cc 和 bcc 必须是纯 ASCII 邮箱地址,例如 mailto:a@example.com?cc=b%40example.com ✅,cc=张三@example.com ❌mailto: 传递敏感信息(如 token、密码)—— 客户端可任意查看源码,且无 HTTPS 保障mailto: 请求尤其在公司内网环境,某些安全插件(如 Cisco AnyConnect Secure Mobility Client)、组策略(GPO)或 Chrome 策略(ExternalProtocolDialogShowAlwaysOpenCheckbox 关闭)会阻止协议跳转。
chrome://settings/handlers → 找到 mailto → 设为“始终允许”localhost 或 file:// 协议下,部分新版浏览器默认禁用外部协议调用,需改用本地服务器(如 python -m http.server)测试mailto 处理器 —— 这种问题不会报错,只会“点下去像没点一样”。