2012-05-31 17 views
3

我正在尝试设置用户通过iphone本机邮件应用程序发送的预填充电子邮件。电子邮件的正文包含用户想要分享的链接。从我的应用程序启动时通过邮件应用程序中断的字符

我的问题是该链接正在被邮件应用程序切断,但是当我在应用程序中打印出字符串时,整个链接都在那里。

下面是一个简单的链接:

http://sample.com/Start.asp?tqnm=xe2nbek92057479&bt=xg&o=100925&c=RB&p=2W7TvRx1 

在邮件应用程序的链接显示为:

http://sample.com/Start.asp?tqnm=xe2nbek92057479 

我使用的标准代码启动邮件应用程序:

NSString *mailString = [NSString stringWithFormat:@"mailto:?to=%@&subject=%@&body=%@", 
         [to stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding], 
         [subject stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding], 
         [body stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]; 
NSLog(@"Mail String: %@", mailString); 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailString]]; 

我也尝试了其他字符串编码,但我得到相同的结果或电子邮件的正文不显示完全没有问题。

任何帮助将非常感激。我一直在寻找答案一段时间,甚至没有找到任何东西甚至指向正确的方向。

+1

尝试使用'%26'替换您链接中的所有'&' –

回答

2

我能解决这个问题,我发现这个功能

NSString* encodeToPercentEscapeString(NSString *string) { 
return (NSString *) 
CFURLCreateStringByAddingPercentEscapes(NULL, 
             (CFStringRef) string, 
             NULL, 
             (CFStringRef) @"!*'();:@&=+$,/?%#[]", 
             kCFStringEncodingUTF8);  

然后我用的是编码的身体,带着符号的情况下,这马提亚指的照顾。谢谢马提亚斯指引我朝着正确的方向前进。

+0

不要忘记接受您的回答,以免问题仍然无法解答! – idz

1

这可能更多的是解答而不是答案,但是......您可以考虑使用MessageUI框架直接从您的应用程序内发送邮件。您可以轻松设置邮件正文,而不会有任何编码问题,并且对用户来说也更好一些(即不会离开您的应用程序)。

网上有很多关于如何做到这一点的教程/代码片段。 (我前一段时间写过这个Sending Mail from your App)。希望这可以帮助!

相关问题