为了账号安全,请及时绑定邮箱和手机立即绑定

使用双查询字符串在地址栏中发送邮件

使用双查询字符串在地址栏中发送邮件

冉冉说 2023-12-14 15:28:41
我有一个非常简单的 Node.js 视频聊天,我用它来给我的朋友打电话。我希望它直接与邮件交互(打开已加载模板的邮件)。到目前为止我有这个:let obsPass = /* helpers.generateObsPassword() < randomly generated char */ 'zH1mA4pR2hF7wJ5'var text = location.href + '&obs=' + obsPass;window.open(`mailto:?subject=Join%20meeting&body=${text}`);有用!这封邮件的正文应该是https://example.com?room=myroom&obs=zH1mA4pR2hF7wJ5,但是,当我用它打开邮件时,正文没有说https://example.com?room=myroom&obs=zH1mA4pR2hF7wJ5,它说https://example.com?room=myroom。我认为这与我拥有的双查询字符串(mailto:? 和 example.com?)有关,这导致浏览器认为该字符串&obs=zH1mA4pR2hF7wJ5正在应用于更大的“网站”,mailto:。有解决办法吗?我可以手动发送电子邮件,但我希望将其集成到我的网站中。谢谢!
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您需要在消息正文中对 URL 进行编码。

而不是写作

window.open(`mailto:?subject=Join%20meeting&body=${text}`);

window.open(`mailto:?subject=Join%20meeting&body=${encodeURIComponent(text)}`);

如果没有这个,你的mailto:URL 最终将是

mailto:?subject=Join%20meeting&body=https://example.com?room=myroom&obs=zH1mA4pR2hF7wJ5

在 URL 查询字符串中,&表示一个参数值的结束和下一个参数的开始。因此,该mailto:URL 在查询字符串中具有subjectbody和三个参数,参数obs值为。bodyhttps://example.com?room=myroom

如果您希望&后面的字符myroom成为 值的一部分body,那么您需要对其进行编码。对它进行编码可以防止邮件程序中的 URL 解析器将其解释为 URL 中参数之一的结尾mailto:body然后,您的邮件程序应该对从 URL参数中提取的值进行解码,mailto:然后再将其放入电子邮件的消息正文中。


查看完整回答
反对 回复 2023-12-14
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信