邮件发送功能是由MessageUI Framework提供的,这个框架是iPhone sdk中最简单的框。由一个类、一个视图控制器,一个protocol组成。
一、创建视图控制器:
1 | MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; |
2 | mc.mailComposeDelegate = self; |
二、设置邮件主题:
1 | [mc setSubject:@"Hello, World!"]; |
三、设置收件人,收件人有三种:
1、设置主收件人
1 | [mc setToRecipients:[NSArray arrayWithObjects:@"xuanyi@163.com", |
2 | "xuanyi@sina.com", nil]; |
2、设置cc
1 | [mc setCcRecipients:[NSArray arrayWithObject:@"xuanyi@163.com"]]; |
3、设置bcc
1 | [mc setBccRecipients:[NSArray arrayWithObject:@"xuanyi@163.com"]]; |
四、设置邮件主体,有两种格式。
一种是纯文本
1 | [mc setMessageBody:@"Watson!!!\n\nCome here, I need you!" isHTML:NO]; |
一个是html格式
1 | [mc setMessageBody:@"<HTML><B>Hello, Joe!</B><BR/>What do you know?</HTML>" |
2 | isHTML:YES]; |
五、添加附件
添加附件需要三个参数,一个是NSData类型的附件,一个是mime type,一个附件的名称。
1 | NSString *path = [[NSBundle mainBundle] pathForResource:@"blood_orange" |
2 | ofType:@"png"]; |
3 | NSData *data = [NSData dataWithContentsOfFile:path]; |
4 | [mc addAttachmentData:data mimeType:@"image/png" fileName:@"blood_orange"]; |
六、视图呈现
1 | [self presentModalViewController:mc animated:YES]; |
2 | [mc release]; |
七、视图控制器的委托方法
邮件视图控制器的委托方法包含在MFMailComposeViewControllerDelegate中,无论用户是否发送或取消发送,不论系统是否能够发送邮件,方法 mailComposeController:didFinishWithResult:error: gets called都会被调用。
1 | - (void)mailComposeController:(MFMailComposeViewController*)controller |
2 | didFinishWithResult:(MFMailComposeResult)result |
3 | error:(NSError*)error { |
4 | switch (result) |
5 | { |
6 | case MFMailComposeResultCancelled: |
7 | NSLog(@"Mail send canceled..."); |
8 | break; |
9 | case MFMailComposeResultSaved: |
10 | NSLog(@"Mail saved..."); |
11 | break; |
12 | case MFMailComposeResultSent: |
13 | NSLog(@"Mail sent..."); |
14 | break; |
15 | case MFMailComposeResultFailed: |
16 | NSLog(@"Mail send errored: %@...", [error localizedDescription]); |
17 | break; |
18 | default: |
19 | break; |
20 | } |
21 | [self dismissModalViewControllerAnimated:YES]; |
22 | } |