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]];

我也尝试过其他字符串编码,但要么得到相同的结果,要么根本不显示电子邮件的正文。

任何帮助将非常感激。我一直在寻找答案,但还没有找到任何可以指引我正确方向的东西。

4

2 回答 2

2

我能够解决它,我找到了这个功能

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

然后我用它来对 body 进行编码,它负责处理 Matthias 所指的 & 符号。感谢 Matthias 为我指明了正确的方向。

于 2012-05-31T20:02:25.710 回答
1

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

网上有很多关于如何做到这一点的教程/代码片段。(我前一阵子写了这篇从你的应用程序发送邮件)。希望这可以帮助!

于 2012-05-31T19:29:03.903 回答