アプリ内にメール機能を追加する

iPhoneを家の中で、毎週一回は必ずなくしてしまう溝田です。
先日なんて棚の裏にあったんですよ…何故?

今回は、iPhoneのアプリ内にメール送信機能を付ける
MessageUIフレームワークについて書きたいと思います。

このフレームワークは、iPhoneなどに持っているメールアプリを
自分達のアプリに追加出来るものです。

アプリ起動時 メールが起動中 メールが起動した画面画像

そんなわけでサンプルからソースコード抜粋です。


-(IBAction) doSendEmail:(id) sender {
	Class mail = (NSClassFromString(@"MFMailComposeViewController"));
	if (mail != nil){
		//メールの設定がされているかどうかチェック
		if ([mail canSendMail]){
			[self showComposerSheet];
		} else {
			[self setAlert:@"メールが起動出来ません!":@"メールの設定をしてからこの機能は使用下さい。"];
		}
	}
}

-(void) showComposerSheet {	
	MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
	picker.mailComposeDelegate = self;
	
	[picker setSubject:@"ここはメールの件名"];
	
	//添付画像を付ける
	UIImage *temp	= [UIImage imageNamed:@"temp.png"];
	NSData *myData	= [[[NSData alloc] initWithData:UIImagePNGRepresentation(temp)] autorelease];
	[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"temp"];
	
	//メールの本文を設定
	NSString *emailBody = @"ここはメールの本文";
	[picker setMessageBody:emailBody isHTML:NO];
	
	[self presentModalViewController:picker animated:YES];
	[picker release];
}

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
	switch (result){
		case MFMailComposeResultCancelled:
			//キャンセルした場合
			break;
		case MFMailComposeResultSaved:
			//保存した場合
			break;
		case MFMailComposeResultSent:
			//送信した場合
			break;
		case MFMailComposeResultFailed:
			[self setAlert:@"メール送信失敗!":@"メールの送信に失敗しました。ネットワークの設定などを確認して下さい"];
			break;
		default:
			break;
	}
	[self dismissModalViewControllerAnimated:YES];
}

細かい分岐などは省いています。
MFMailComposeViewControllerが、画面をもって来てくれるので
それをpresentModalViewControllerで表示させてあげるだけで済みます。
NSDataを渡してあげれば、添付ファイルなどを付ける事も出来るので
絵を描くツールや、カメラアプリの機能などで使えるのではないでしょうか。

実装も簡単ですので、お試しあれ。

このソースコードを含んだサンプル

コニョル

メールって携帯で書くの面倒だよね〜

2 Responses to アプリ内にメール機能を追加する

  1. ピンバック: iphone-meets-SNS « corelab

  2. ピンバック: Objective-Cでメール機能を実装する方法 | 6oolab

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>