アプリ内からiPhone標準のメール機能を呼び出して、メールを送信する方法のまとめ。
『前準備』
・アプリにフレームワーク『MessageUI.framework』を追加
『メール機能を使用する.hで、フレームワークを呼び出す』
#import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h> @interface DetailViewController : UITableViewController<MFMailComposeViewControllerDelegate>
『メール機能を使用する.m内に処理を構築』
- (void)sendMail { Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); if (mailClass != nil){ //メールが送信できる状態か確認 if ([mailClass canSendMail]){ [self showComposerSheet]; } else { [self showAlert:@"メールが起動出来ません":@"この機能は、メールの設定後にご使用下さい。"]; } } } -(void) showComposerSheet { MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self; [picker setSubject:@"メール件名"]; NSString *emailBody = @"メール本文\nメール本文2"; [picker setMessageBody:emailBody isHTML:NO]; [self presentModalViewController:picker animated:YES]; } - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { switch (result){ case MFMailComposeResultCancelled: //キャンセルした場合 break; case MFMailComposeResultSaved: //保存した場合 break; case MFMailComposeResultSent: //送信した場合 break; case MFMailComposeResultFailed: [self showAlert:@"メール送信失敗":@"メールの送信に失敗しました。ネットワークの設定などを確認して下さい"]; break; default: break; } [self dismissModalViewControllerAnimated:YES]; } -(void)showAlert:(NSString*)alertMsgTitle:(NSString*)alertMsg{ UIAlertView *alert = [[UIAlertView alloc] init]; alert.title = alertMsgTitle; alert.message = alertMsg; [alert addButtonWithTitle:@"OK"]; [alert show]; }
※showAlertは、オマケです。
上記を記述後、『sendMail』を好きなタイミングで呼び出せば、メール送信の画面がアプリ内に展開されます。