如何从链接中删除空白

时间:2014-08-07 16:05:39

标签: .net windows email c#-4.0 outlook

这可能是一个非常小的问题,但老实说我不知道​​是什么修复,我正在编写一个应用程序,右键单击我生成链接的文件并使用outlook发送到某些电子邮件地址,这生成的电子邮件链接必须是电子邮件正文,如果生成的链接不包含任何空格,这可以正常工作。如果我的文件名是"This is a testing file.txt",那么生成的链接将是

https://..../share/78/publicLinkHtml/This%20is%20a%20testing%20file.txt

但是当这个电子邮件正文作为

呈现到outlook电子邮件正文中时

下载文件链接

https://..../share/78/publicLinkHtml/This is a testing file.txt

所以链接破了

我正在做的就是这个

strBody = "%0D%0A";
strBody += strDownloadLink + "%0D%0A";
            strBody += "%0D%0A";

调试时我会检查strDownloadLink在空格位置是否包含%20个字符,但是在电子邮件正文中它已被删除。

任何想法如何解决这个问题。

由于

3 个答案:

答案 0 :(得分:2)

你需要使用HtmlEncode:

StringWriter writer = new StringWriter();
Server.HtmlEncode(strDownloadLink, writer);
String encodedString = writer.ToString();

有关详细信息,请参阅here

答案 1 :(得分:1)

如果您使用的是纯文本MailItem.Body属性,请使用MailItem.HTMLBody属性并提供带有正确构造的<a> HTML元素的HTML字符串。

答案 2 :(得分:0)

非常感谢@Donal给我提供解决方案的想法,我忙于使用"%0D%0A" or <p></p>进行HTML格式化我很傻!

但实际的解决方案略有不同,我们可以稍微不同的方式使用HTML编码。

.Net本身具有非常好的API,可以将任何字符串构造成URI字符串,我所做的是将该字符串放入EscapeUriString();

代码

strDownloadLink = System.Uri.EscapeUriString(strDownloadLink);

然后我把它放进

strBody = "%0D%0A";
strBody += strDownloadLink + "%0D%0A";
strBody += "%0D%0A";

使用此链接后,链接很好,没有中断。

由于