【问题标题】:Characters getting cut off by Mail app when launching from within my app从我的应用程序中启动时,字符被邮件应用程序截断
【发布时间】:2012-05-31 16:41:31
【问题描述】:

我正在尝试为用户设置一个预填充的电子邮件,以通过 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]];

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

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

【问题讨论】:

  • 尝试将链接中的所有& 替换为%26

标签: iphone ios email character-encoding url-encoding


【解决方案1】:

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

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

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

【讨论】:

  • 别忘了接受你的回答,这样问题就不会显得没有答案了!
【解决方案2】:

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

网络上有很多关于如何执行此操作的教程/代码 sn-ps。 (我不久前写了这个Sending Mail from your App)。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2012-11-08
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多