在Mailto主体中插入链接

3

我需要在电子邮件正文中添加一些PDF文件的URL链接。

Outlook可以在正文中创建可点击的链接(Ctrl+右键单击)。问题是,如果PDF文件名中有空格,URL将会断开。

这是我应用程序生成的HTML代码。问题仅出现在URL中包含空格的情况下。我尝试在服务器端使用“%20”替换URL中的空格,但这也没有帮助。

<a href="mailto:;somemail@gmail.com;?Subject=SomeSubject&amp;body=http://someUrl/File%20name%202015-05-21%2011-21-08.pdf%0D%0A%0D%0A" title="title" class="btn">Send email</a>

可点击的 URL 在第一个空格处会中断:

http://someUrl/File...

有没有任何方式可以对 URL 进行编码,以便 Outlook 在正文中创建正确的链接?祝好!
2个回答

3

URL中不能包含空格,因此必须对文件名中的空格进行编码,以创建指向该文件的URL。

mailto: URL也是URL,因此解析时编码的空格将转换回普通空格。将一个URL插入到另一个URL中时,必须对嵌套URL中的所有特殊字符进行编码(即需要将%字符转换为%25)。


1
即使我使用HttpUtility.UrlPathEncode编码URL并对所有字符进行编码(将空格变为%20等),但当我在HTML中单击链接时,Outlook中的URL会被解码,我只得到部分链接。 - cah1r
2
@MateuszMigała — 所以你已经对你想放在 HTTP URL 中的文件名中的空格进行了编码,但是你没有对想要放在 mailto URL 中的 URL 中的%符号进行编码。(这也是这个答案的重点)。 - Quentin

0
简单的实现方法是调用js中的encodeUrl()两次。
encodeUrl(encodeUrl(url))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接