ios发送邮件
本文转载至 http://www.cnblogs.com/edgarli/archive/2013/07/26/3216876.html
方法一:
1.需要引入库MessageUI.framework
#import <MessageUI/MessageUI.h>
#import<MessageUI/MFMailComposeViewController.h>
2.@interface ViewController : UIXXXXXViewController <..., MFMailComposeViewControllerDelegate>
@end
3.发送执行代码。事先验证相关支持。
Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); if (!mailClass) { UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"发送邮件" message:@"当前系统版本不支持应用内发送邮件功能,您可以使用mailto方法代替" delegate:self cancelButtonTitle:@"我知道啦" otherButtonTitles: nil] autorelease]; [alert show]; return; } if (![mailClass canSendMail]) { UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"发送邮件" message:@"用户没有设置邮件账户" delegate:self cancelButtonTitle:@"我知道啦" otherButtonTitles: nil] autorelease]; [alert show]; return; } MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; mc.mailComposeDelegate = self; [mc setSubject:@"Hello, World!"]; [mc setToRecipients:[NSArray arrayWithObject:@"xxxxx@163.com"]]; // [mc setCcRecipients:[NSArray arrayWithObject:@"xxxxx@163.com"]]; // [mc setBccRecipients:[NSArray arrayWithObject:@"secret@gmail.com"]]; [mc setMessageBody:@"Hello,slick!!!\n\nCome here, I need you!" isHTML:NO]; // 添加一张图片 UIImage *addPic = [UIImage imageNamed: @"Icon@2x.png"]; NSData *imageData = UIImagePNGRepresentation(addPic); // png [mc addAttachmentData: imageData mimeType: @"" fileName: @"Icon.png"]; //添加一个pdf附件 NSString *file = [self fullBundlePathFromRelativePath:@"高质量C++编程指南.pdf"]; NSData *pdf = [NSData dataWithContentsOfFile:file]; [mc addAttachmentData: pdf mimeType: @"" fileName: @"高质量C++编程指南.pdf"]; [self presentViewController:mc animated:YES completion:nil]; [mc release];
回调函数:
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { switch (result) { case MFMailComposeResultCancelled: NSLog(@"Mail send canceled..."); break; case MFMailComposeResultSaved: NSLog(@"Mail saved..."); break; case MFMailComposeResultSent: NSLog(@"Mail sent..."); break; case MFMailComposeResultFailed: NSLog(@"Mail send errored: %@...", [error localizedDescription]); break; default: break; } [self dismissViewControllerAnimated:YES completion:nil]; }
方法二:
url方式
#pragma mark - 使用系统邮件客户端发送邮件 -(void)launchMailApp { NSMutableString *mailUrl = [[[NSMutableString alloc]init]autorelease]; //添加收件人 NSArray *toRecipients = [NSArray arrayWithObject: @"first@example.com"]; [mailUrl appendFormat:@"mailto:%@", [toRecipients componentsJoinedByString:@","]]; //添加抄送 NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil]; [mailUrl appendFormat:@"?cc=%@", [ccRecipients componentsJoinedByString:@","]]; //添加密送 NSArray *bccRecipients = [NSArray arrayWithObjects:@"fourth@example.com", nil]; [mailUrl appendFormat:@"&bcc=%@", [bccRecipients componentsJoinedByString:@","]]; //添加主题 [mailUrl appendString:@"&subject=my email"]; //添加邮件内容 [mailUrl appendString:@"&body=<b>email</b> body!"]; NSString* email = [mailUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; [[UIApplication sharedApplication] openURL: [NSURL URLWithString:email]]; }
即 [[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"mailto:foo@example.com?cc=bar@example.com&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!"]];
还可使用skpsmtpmessage这样的第三方控件。