mailto:スキームの注意点(iOS)

More than 3 years have passed since last update.

iOSでは標準のメールアプリを開くURLスキームがあります。

mailto:mail@dom.com?subject=text&body=body

のアドレスをUIApplicationの共有インスタンスでopenURLすることでメールアプリが起動し、自動的に宛先、件名を補完します。

この際に、

NSString*subject = @"こんにちは!";

NSString*text = @"今度油揚げ食べましょう";
NSString*scheme = [NSString stringWithFormat:@"mailto:?subject=%@&body=%@",subject,text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:scheme]];

のようにしてしまいがちですが、これだと実はメールアプリは起動しません。

パラメータはUTF8エンコードする必要があります。

NSString*subject = 

[@"こんにちは!" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString*text =
[@"今度油揚げ食べましょう" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString*scheme = [NSString stringWithFormat:@"mailto:?subject=%@&body=%@",subject,text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:scheme]];

これで正常にメールアプリが起動します。