这可能是一个非常小的问题,但老实说我不知道是什么修复,我正在编写一个应用程序,右键单击我生成链接的文件并使用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个字符,但是在电子邮件正文中它已被删除。
任何想法如何解决这个问题。
由于
答案 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";
使用此链接后,链接很好,没有中断。
由于