我正在编写一个默认邮件客户端,以便在有人点击mailto:bob@example.com
craigslist mailto链接的格式为mailto:bob%40example.com
使用时会出现异常。
这里有一些简单的代码来重复c#
System.Uri u1 = new Uri(@"mailto:bob@ms.com"); // ok so far
System.Uri u2 = new Uri(@"http://somewhere.foo/profile/username%40somewhere.foo"); // still ok
System.Uri u3 = new Uri(@"mailto:bob%40ms.com"); // crash here
问题1:我正在使用visual studio 2012
答案 0 :(得分:4)
RFC 6068(http://www.ietf.org/rfc/rfc6068.txt)定义了mailto协议,不指定%40是将@替换为用户名/域名分隔符的有效语法。
它确实指定如果用户名包含@,例如hello@you@domain.com
,则可以使用%40将其转义为hello%40you@domain.com
。但是它没有说明hello%40domain.com
将是一个有效的mailto URI。
如果微软决定在Outlook中支持它,那仍然不会改变RFC,这是权威的,没有定义它 - 所以我会说,微软可能因为健壮性,或者它可能是解析%xx语法的任何URI的副作用...