2009-07-03 10 views
2

UPDATE:私は私のiPhoneの中から電子メールメッセージを送信しよう : How do I encode "&" in a URL in an HTML attribute value?はMAILTO作成:本体内のURLとURLをiPhone SDK

以下のコードを考えてみてください:私はちょうどここに同様のポストを見つけましたアプリ。 私が遭遇する問題は、電子メールの本文にURLを入れたいということです。 このURLには2つのアンパサンドが含まれています。 "stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding"を使用してすべての文字列をエンコードしていますが、URLは最初のアンパサンドの後に切り捨てられた新しいメールmessagdで終わります。 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]; 

答えて

0

電子メールメッセージの本文はHTMLですか?その場合、ほとんどの電子メールリーダーとブラウザは、アンパサンドをHTMLエンティティのプレフィックスとして解釈し、アンパサンドに続く法的なエンティティ値ではなく 'ctime'を参照して、残りの文字列を解析することをあきらめます。

Here are some details。 '&'文字の文字列置換を '&'としてみて、それが役立つかどうか確認してください。

また、OS 3.0の新しいメッセージングフレームワークを使用して、アプリ内から直接電子メールを送信することもできます。

+0

を実装「&」には「&」が含まれているため、問題は解決しません。 ここに提案(http://stackoverflow.com/questions/730101/how-do-i-encode-in-a-url-in-an-html-attribute-value)16進コード%26を使用する必要があります。どういうわけか私のために働いていません。 – Sjakelien

+0

あなたはHTMLエンティティとしてURLに "&"をつけて "&"をミックスしています。 %26値はURLでエンコードするための値です。しかし、HTMLコンテンツにリンクを含める場合は、 "&"を "&"に置き換える必要があります。 HTMLパーサーが "&"を見ると、それに続くものが先に見えます。それが投稿されたリンクの法人の値の1つである場合、それはその文字でレンダリングされます。それが無効な場合、それは停止します(これはあなたが得ているものです)。アンパサンドのセクションを確認してください:http://htmlhelp.com/tools/validator/problems.html – Ramin

0

実際のHTML URLが必要な場合は、mailto:を使用できません。あなたは、次のいずれかを実行する必要が

  1. ここで問題があることが置換である、独自のSMTPサーバー
  2. 使用SDK 3.0メールのフレームワーク(MFMailCompose ...)
+0

これはかなりの声明です!あなたはそれについていくつかの議論をしていますか? – Sjakelien

+0

ほとんどの試行錯誤。 iPhone 2.2日で、私はsmtpの部分を行ういくつかのコードをリリースしました。 http://github.com/kailoa/iphone-smtp/treeで利用できます – amattn

関連する問題