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

메일 보내기

앱 내에서 메일을 보내려면 MFMailComposeViewController 클래스를 사용한다. 물론 mailto 방식의 URL을 보내어 메일 앱을 실행하는 방법도 있지만 앱 내에서 메일을 작성해서 보내기 위한 방법으로는 이를 사용한다.

이를 활용하기 위해서는 MessageUI.framework 를 연결해야 하고 <MessageUI/MessageUI.h> 파일을 임포트해야 한다. 주소록에서 이메일을 받기 위해서는 주소록의 ABPeoplePickerViewController를 사용해야 한다.

다음은 예시

@implemetation WritingMyMailViewController(MailMethods)

    -(void)displayComposerSheet
{
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;

    [picker setSubject:@"Hello from California!"];

    // 수신자 설정

    NSArray *toRecipients = [NSArray arrayWithObjects:@"fistst@example.com", nil];
    NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", nil];
    NSArray *bccRecipients = [NSArray arrayWithObjects:@"third@example.com",nil];

    [picker setToRecipients:toRecipients];
    [picker setCcRecipients:ccRecipients];
    [picker setBccRecipients:bccRecipients];

    // 이미지 첨부하기
    NSString *path = [[NSBundle mainBundle] pathForResource:@"iPodnano" ofType:@"png"];
    NSData *myData = [NSData dataWithContentsOfFile:path];
    [picker addAttachmentData:myData mimeType:@"image/png" fileName:@"iPodnano"];

    // 본문 채우기
    NSString *emailBody = @"It is raining in sunny California";
    [picker setMessageBody:emailBody isHTML:NO];

    [self presentModalViewController:picker animated:YES];

}

// 델리게이트
-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishedWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    [self dismissModalViewControllerAnimated:YES];
}

@end