雖然發短信和發郵件都可以使用 openURL去處理,但使用MessageUI可以做到回調成功失敗,而且也非常簡單;
發郵件
- (void)viewDidLoad {
[super viewDidLoad];
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"主題"];
[controller setToRecipients:@[@"shoujianren@qq.com"]];
[controller setCcRecipients:@[@"chaosong@qq.com"]];
[controller setBccRecipients:@[@"misong@qq.com"]];
[controller setMessageBody:@"啥" isHTML:NO];
NSString *path = [[NSBundle mainBundle] pathForResource:@"bg1" ofType:@"png"];
[controller addAttachmentData:[NSData dataWithContentsOfFile:path] mimeType:@"png" fileName:@"附件"];
[self presentViewController:controller animated:YES completion:nil];
}
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(nullable NSError *)error {
switch (result) {
case MFMailComposeResultCancelled:
NSLog(@"取消");
break;
case MFMailComposeResultSaved:
NSLog(@"已保存");
break;
case MFMailComposeResultSent:
NSLog(@"已發送");
break;
case MFMailComposeResultFailed:
NSLog(@"發送失敗");
break;
default:
break;
}
}
發短信
- (void)viewDidLoad {
[super viewDidLoad];
if ([MFMessageComposeViewController canSendText]) {
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
controller.messageComposeDelegate = self;
controller.recipients = @[@"187********"];
controller.body = @"晚飯吃了嗎?";
[self presentViewController:controller animated:YES completion:nil];
}
}
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
switch (result) {
case MessageComposeResultCancelled:
NSLog(@"取消");
break;
case MessageComposeResultSent:
NSLog(@"已發送");
break;
case MessageComposeResultFailed:
NSLog(@"發送失敗");
break;
default:
break;
}
}
1