Win8/WinRT - 如何在电子邮件正文中添加换行符

6
在我的Windows 8商店应用程序中,我有一个页面上的“发送电子邮件”按钮,用户可以单击它并向我们发送一些常见问题的电子邮件。
我需要预加载一些文本到电子邮件正文中,但我似乎无法添加换行符。我尝试使用Environment.NewLine和"\r\n",但都不起作用。
var mailto = new Uri("mailto:?to=james.jones@example.com&subject=Hello world&body=Hi," + Environment.NewLine + "Can you please ..."); 
await Windows.System.Launcher.LaunchUriAsync(mailto);

当我运行它时,我得到了“嗨,你能...”的输出。换行符被省略了。
3个回答

8
尝试使用 "%0d%0a" 作为换行符,例如:
"Hi,%0d%0aCan you please..."

那是一个URL编码的ASCII CR/LF序列。这对于我内置的邮件应用程序有效,但您无法保证它将来适用于用户可能安装的任何随意邮件应用程序。


5
原因在于你正在启动一个Uri,Uris要求它们的内容被UrlEncoded/UrlEncodable。在环境.NewLine等情况下,您将得到一个无效的Uri。
您可以通过像这样对环境换行符进行Url编码来解决这个问题:
System.Net.WebUtility.UrlEncode(Environment.NewLine)

0

你或许应该考虑使用共享合同将你的内容分享到邮件应用中。好处是:使用你的软件的用户可以将其分享到其他应用程序,而不仅仅是电子邮件。


1
我认为共享合同的目的不同。在我的情况下,我只想让用户向我们发送电子邮件。信息可能是敏感的,不应该被分享。 :) - Justin XL
2
我想补充一点,通过合同共享也会出现完全相同的问题,换行符会被忽略。 - Timothée Bourguignon

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