使用MFMailComposeViewController发邮件
因为担心有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];
}