使用MFMailComposeViewController发邮件

 •  Filed under iOS

因为担心有API格式改了但是我不知道的情况 目前在做的软件里面设置了一个无法解析就提示发邮件的功能 因此学习了下MFMailComposeViewController

准备:
添加MessageUI.framework

#import <MessageUI/MessageUI.h>

Delegate:

@interface FirstTabListTableViewController ()<MFMailComposeViewControllerDelegate>

实现:

//这个SendParseErrorEmail是自定义的
- (void)SendParseErrorEmail
{
    if ([MFMailComposeViewController canSendMail])
    { // 用户已设置邮件账户
        // 邮件服务器
        MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init];
        // 设置邮件代理
        [mailCompose setMailComposeDelegate:self];
        
        // 设置邮件主题
        [mailCompose setSubject:@"报告软件错误"];
        
        // 设置收件人
        [mailCompose setToRecipients:@[@"邮箱地址"]];
        
        /**
         *  设置邮件的正文内容
         */
        NSString *emailContent = @"请填写:\niOS系统版本:\n手机软件版本:\n详细描述:\n我们将尽快解决,谢谢反馈!";
        // 是否为HTML格式
        [mailCompose setMessageBody:emailContent isHTML:NO];

        // 添加附件 这里我的日志叫做ErrorLog
        NSData *txt=[NSKeyedArchiver archivedDataWithRootObject:self.ErrorLog];
        [mailCompose addAttachmentData:txt mimeType:@"text/plain" fileName:@"Log.txt"];
        
        // 弹出邮件发送视图
        [self presentViewController:mailCompose animated:YES completion:nil];
        
    }
    else
    //没有登录邮箱的话 就弹我博客
    {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.justzht.com"]];
    }
        
}

- (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;
    }
    
    // 关闭邮件发送视图
    [self dismissViewControllerAnimated:YES completion:nil];
}