使用正文iPhone SDK中的URL创建mailto:URL

时间:2009-07-03 13:40:45

标签: iphone url escaping mailto

更新:我刚刚在这里找到了类似的帖子: 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];

2 个答案:

答案 0 :(得分:0)

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

Here are some details。尝试使用“&”对“&”字符进行字符串替换,看看是否有帮助。

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

答案 1 :(得分:0)

如果您需要真正的HTML网址,则无法使用mailto:

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

  1. 实施您自己的SMTP服务器
  2. 使用SDK 3.0邮件框架(MFMailCompose ...)