앱 내에서 메일을 보내려면 MFMailComposeViewController 클래스를 사용한다. 물론 mailto 방식의 URL을 보내어 메일 앱을 실행하는 방법도 있지만 앱 내에서 메일을 작성해서 보내기 위한 방법으로는 이를 사용한다.
이를 활용하기 위해서는 MessageUI.framework 를 연결해야 하고 <MessageUI/MessageUI.h> 파일을 임포트해야 한다. 주소록에서 이메일을 받기 위해서는 주소록의 ABPeoplePickerViewController를 사용해야 한다.
다음은 예시
@implementation MailWritingViewController(MailMethods)
- (void)displayComposerSheet
{
MFMailcomposeViewController *controller =
[[MFMailComposeViewController alloc] init];
[controller setMailComposeDelegate:self];
NSArray *toRecipients = @[@"first@example.com"];
NSArray *ccRecipients = @[@"second@example.com"];
NSArray *bccRecipients = @[@"third@example.com"];
[controller setToRecipients:toRecipients];
[controller setCcRecipients:ccRecipients];
[controller setBccRecipients:bccRecipients];
// 이미지 첨부하기
// pathForResource:ofType: 에서 타입은 "."을 포함하지 않는다.
NSString *path = [[NSBundle mainBundle] pathForResource:@"iPhone" ofType:@"png"];
NSData *data = [NSData dataWithContentsOfFile:path];
[controller addAttachmentData:data mimeType:@"image/png" filename:@"iphone"];
NSStrign *body = @"It is rainning in sunny California.";
[controller setMessageBody:body isHTML:NO];
[self presentModalViewController:controller animated:YES];
}
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error
{
[self dismissModalViewControllerAnimated:YES];
}
@end