我有一个非常简单的 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 在查询字符串中具有subject
、body
和三个参数,参数obs
值为。body
https://example.com?room=myroom
如果您希望&
后面的字符myroom
成为 值的一部分body
,那么您需要对其进行编码。对它进行编码可以防止邮件程序中的 URL 解析器将其解释为 URL 中参数之一的结尾mailto:
。body
然后,您的邮件程序应该对从 URL参数中提取的值进行解码,mailto:
然后再将其放入电子邮件的消息正文中。
添加回答
举报
0/150
提交
取消