读书人

MFMailComposeViewController发送邮件

发布时间: 2013-03-21 10:08:17 作者: rapoo

MFMailComposeViewController发送邮件的实例

  1. iPhone API已经提供了系统写邮件界面的接口,使用MFMailComposeViewController,用来显示界面.
  2. 项目中需要添加MessageUi.framework。头文件加入MFMailComposeViewControllerDelegate。#import <MessageUI/MessageUI.h>
  3. sendMailViewController.m文件的实现:
  4. - (void)viewDidLoad
  5. {
  6. UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];
  7. button.frame = CGRectMake(0, 40, 320, 50);
  8. [button setTitle: @"Mail" forState: UIControlStateNormal];
  9. [button addTarget: self action: @selector(sendEMail) forControlEvents: UIControlEventTouchUpInside];
  10. [self.view addSubview: button];
  11. }
  12. - (void) alertWithTitle: (NSString *)_title_ msg: (NSString *)msg
  13. {
  14. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:_title_
  15. message:msg
  16. delegate:nil
  17. cancelButtonTitle:@"确定"
  18. otherButtonTitles:nil];
  19. [alert show];
  20. [alert release];
  21. }
  22. //点击按钮后,触发这个方法
  23. -(void)sendEMail
  24. {
  25. Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
  26. if (mailClass != nil)
  27. {
  28. if ([mailClass canSendMail])
  29. {
  30. [self displayComposerSheet];
  31. }
  32. else
  33. {
  34. [self launchMailAppOnDevice];
  35. }
  36. }
  37. else
  38. {
  39. [self launchMailAppOnDevice];
  40. }
  41. }
  42. //可以发送邮件的话
  43. -(void)displayComposerSheet
  44. {
  45. MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];
  46. mailPicker.mailComposeDelegate = self;
  47. //设置主题
  48. [mailPicker setSubject: @"eMail主题"];
  49. // 添加发送者
  50. NSArray *toRecipients = [NSArray arrayWithObject: @"first@example.com"];
  51. //NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];
  52. //NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com", nil];
  53. [mailPicker setToRecipients: toRecipients];
  54. //[picker setCcRecipients:ccRecipients];
  55. //[picker setBccRecipients:bccRecipients];
  56. // 添加图片
  57. UIImage *addPic = [UIImage imageNamed: @"123.jpg"];
  58. NSData *imageData = UIImagePNGRepresentation(addPic); // png
  59. // NSData *imageData = UIImageJPEGRepresentation(addPic, 1); // jpeg
  60. [mailPicker addAttachmentData: imageData mimeType: @"" fileName: @"123.jpg"];
  61. NSString *emailBody = @"eMail 正文";
  62. [mailPicker setMessageBody:emailBody isHTML:YES];
  63. [self presentModalViewController: mailPicker animated:YES];
  64. [mailPicker release];
  65. }
  66. -(void)launchMailAppOnDevice
  67. {
  68. NSString *recipients = @"mailto:first@example.com&subject=my email!";
  69. //@"mailto:first@example.com?cc=second@example.com,third@example.com&subject=my email!";
  70. NSString *body = @"&body=email body!";
  71. NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
  72. email = [email stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
  73. [[UIApplication sharedApplication] openURL: [NSURL URLWithString:email]];
  74. }
  75. - (void)mailComposeController:(MFMailComposeViewController *)controller
  76. didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
  77. {
  78. NSString *msg;
  79. switch (result)
  80. {
  81. case MFMailComposeResultCancelled:
  82. msg = @"邮件发送取消";
  83. break;
  84. case MFMailComposeResultSaved:
  85. msg = @"邮件保存成功";
  86. [self alertWithTitle:nil msg:msg];
  87. break;
  88. case MFMailComposeResultSent:
  89. msg = @"邮件发送成功";
  90. [self alertWithTitle:nil msg:msg];
  91. break;
  92. case MFMailComposeResultFailed:
  93. msg = @"邮件发送失败";
  94. [self alertWithTitle:nil msg:msg];
  95. break;
  96. default:
  97. break;
  98. }
  99. [self dismissModalViewControllerAnimated:YES];
  100. }

读书人网 >操作系统

热点推荐