콘텐츠로 건너뛰기
Home » iOS에서 메일 작성 화면을 통해 메일 보내기

iOS에서 메일 작성 화면을 통해 메일 보내기

앱 내에서 메일을 보내려면 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