更新:我刚刚在这里找到了类似的帖子: How do I encode "&" in a URL in an HTML attribute value?
请考虑以下代码: 我尝试从我的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];
答案 0 :(得分:0)
电子邮件正文是否为HTML?如果是这样,大多数电子邮件阅读器和浏览器将尝试将&符号解释为HTML实体前缀,并在&符号后面看到'ctime'而不是合法实体值,只是放弃解析其余字符串。
Here are some details。尝试使用“&
”对“&
”字符进行字符串替换,看看是否有帮助。
另外,可能需要考虑在OS 3.0中使用新的消息传递框架,它允许您直接从应用程序内部发送电子邮件。
答案 1 :(得分:0)
如果您需要真正的HTML网址,则无法使用mailto:
。
您必须执行以下操作之一: