2

更新:我刚刚在这里找到了一个类似的帖子: 如何在 HTML 属性值的 URL 中编码“&”?

请考虑下面的代码:我尝试从我的 iPhone 应用程序中发送电子邮件。我遇到的问题是我想在电子邮件正文中放置一个 URL。此 URL 包含两个 & 符号。我正在使用“stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding”对所有字符串进行编码,但 URL 最终出现在我的新邮件消息中,在第一个&符号之后被截断。IE:“ http://www.mydomain.nl/?cm=79&ctime=1246572000&cid=4772 ”变成“ http://www.mydomain.nl/?cm=79 ”。

有什么建议我可以做些什么来逃避?

 NSString *eMailSubject = @"My Subject";
 NSString *encodedSubject = [[NSString alloc] initWithString:[eMailSubject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
 NSString *eMailBody = @"http://www.mydomain.nl?cm=79&ctime=1246572000&cid=4772";
 NSString *encodedBody = [[NSString alloc] initWithString:[eMailBody stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
 NSString *urlString = [[NSString alloc] initWithString:[NSString stringWithFormat:@"mailto:?subject=%@&body=%@", encodedSubject, encodedBody]];
 NSString *encodedURL = [[NSString alloc] initWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
 NSURL *url = [[NSURL alloc] initWithString:encodedURL];
 [[UIApplication sharedApplication] openURL:url];
4

2 回答 2

0

如果你想要真正的 HTML URL,你不能使用mailto:.

您必须执行以下操作之一:

  1. 实现你自己的 SMTP 服务器
  2. 使用 SDK 3.0 邮件框架 (MFMailCompose...)
于 2009-07-05T00:39:02.913 回答
0

电子邮件的正文是 HTML 格式吗?如果是这样,大多数电子邮件阅读器和浏览器将尝试将 & 符号解释为 HTML 实体前缀,并在 & 符号后面看到“ctime”而不是合法实体值,放弃解析字符串的其余部分。

这里有一些细节。尝试&用 ' ' 对 ' ' 字符进行字符串替换,&看看是否有帮助。

此外,可能需要考虑使用 OS 3.0 中的新消息传递框架,该框架允许您直接从应用程序内部发送电子邮件。

于 2009-07-03T18:03:47.157 回答