1.添加MessageUI.framework
2.在头文件加入
// Add to top of file #import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h> // Mark class as implementing MFMailComposeViewControllerDelegate @interface RootViewController : UIViewController <MFMailComposeViewControllerDelegate> {
3.发送邮件的界面显示
- (void)mailData:(NSData *)data { if (![MFMailComposeViewController canSendMail]) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Oops!", @"") message:NSLocalizedString(@"Your device cannot send mail.", @"") delegate:self cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil]; [alert show]; [alert release]; return; } // Start up mail picker MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; UINavigationBar *bar = picker.navigationBar; picker.mailComposeDelegate = self; [picker setSubject:@"Check out this cute wallpaper!"]; [picker addAttachmentData:data mimeType:@"image/jpg" fileName:@"wallpaper.jpg"]; // Set up the recipients. NSArray *toRecipients = [NSArray arrayWithObjects:nil]; [picker setToRecipients:toRecipients]; // Fill out the email body text. NSString *actualBody = @"Check out this cute wallpaper! You can download the fullscreen version for free from: http://www.vickiwenderlich.com"; [picker setMessageBody:actualBody isHTML:NO]; // Present the mail composition interface. [self presentModalViewController:picker animated:YES]; bar.topItem.title = @"Email Wallpaper"; [picker release]; // Can safely release the controller now. }
- (IBAction)mailTapped:(id)sender { CCScene * scene = [[CCDirector sharedDirector] runningScene]; HelloWorldLayer *layer = [scene.children objectAtIndex:0]; UIImage *curImage = layer.curImage; NSData *data = UIImageJPEGRepresentation(curImage, 0.8); [self mailData:data]; }
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { [self dismissModalViewControllerAnimated:YES]; }
6.如果附件太大,可以用MBProgressHUD开源类库添加等待界面
// Add to top of file #import "MBProgressHUD.h" // Replace mailTapped method with the following - (IBAction)mailTapped:(id)sender { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; hud.labelText = @"Preparing wallpaper..."; CCScene * scene = [[CCDirector sharedDirector] runningScene]; HelloWorldLayer *layer = [scene.children objectAtIndex:0]; UIImage *curImage = layer.curImage; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { NSData *data = UIImageJPEGRepresentation(curImage, 0.8); dispatch_async(dispatch_get_main_queue(), ^(void) { [MBProgressHUD hideHUDForView:self.view animated:YES]; [self mailData:data]; }); }); }