iPhone ネイティブアプリからメールを送信する方法
結構苦労したので、備忘録代わりにメモ。
基本的には、mailto: の URI を作って、UIApplication の openURI: を使ってメーラを起動すればよい。
URI は "mailto:メールアドレス?Subject=題名&body=メッセージ本文" のような感じに作ってやればいい。気をつけなければならないのは以下の2点。
- 1. URL エンコードを行うこと
 - 2. 本文は HTML で記述すること
 
1. のほうはあたりまえなのだが、2. のほうを見落としがちなので注意。順序としては、2. をやって、それから 1. をやる必要がある。なお、URL エンコードは NSString のstringByAddingPercentEscapesUsingEncoding: でできる。
例えば、本文中で改行したいなら、本文中に <br> と書く。さらに URL エンコードをして、%3Cbr%3E となる。
本文中に 
私が作ったエンコード用のメソッドはこんな感じ。
- (void)EncodeMailBody:(NSMutableString*)str
{
#define REPLACE(from, to) \
  [str replaceOccurrencesOfString: from withString: to \
  options:NSLiteralSearch range:NSMakeRange(0, [str length])]
	
	// convert to HTML
	REPLACE(@"&", @"&");
	REPLACE(@"<", @"<");
	REPLACE(@">", @">");
	REPLACE(@"\"", @""");
	REPLACE(@" ", @" ");
	REPLACE(@"\n", @"<br>");
	REPLACE(@"\n", @"<br>");
	// URL encoding
	NSString *tmp = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
	[str setString:tmp];
	
	// encode for mail body
	REPLACE(@"&", @"%26");
}なお、stringByAddingPercentEscapesUsingEncoding: は、& をエンコードしてくれないので、これをさらに %26 に置換する必要がある。