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

次に、それを使用して、Matthias が参照していたアンパサンド ケースを処理する本文をエンコードしました。私を正しい方向に向けてくれてありがとうマティアス。

于 2012-05-31T20:02:25.710 に答える
1

これはおそらく答えというよりも回避策ですが... MessageUI フレームワークを使用して、アプリ内から直接メールを送信することを検討してください。エンコーディングの問題なしにメールの本文を簡単に設定でき、ユーザーにとっても少し便利です (つまり、アプリケーションから切り替えません)。

これを行う方法については、ウェブ上にたくさんのチュートリアル/コード スニペットがあります。(私はこれを少し前に書きましたアプリからメールを送信する)。お役に立てれば!

于 2012-05-31T19:29:03.903 に答える