只能在真机使用.

模拟器没有E-mail发送功能.无法调用

#import "EmailViewController.h"

#import <UIKit/UIKit.h>

#import <MessageUI/MFMailComposeViewController.h>

@interface EmailViewController ()<MFMailComposeViewControllerDelegate>

@end

@implementation EmailViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];

btn.frame=CGRectMake(20, 100, 200, 100);

[btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btn];

}

-(void)click

{

Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));

if (!mailClass) {

[self alertWithMessage:@"当前系统版本不支持应用内发送邮件功能,您可以使用mailto方法代替"];

return;

}

if (![mailClass canSendMail]) {

[self alertWithMessage:@"用户没有设置邮件账户"];

return;

}

[self displayMailPicker];

}

- (void)displayMailPicker

{

MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];

mailPicker.mailComposeDelegate = self;

//设置主题

[mailPicker setSubject: @"主题"];

//添加收件人

NSArray *toRecipients = [NSArray arrayWithObject: @"liuliuliu@hotmail.com"];

[mailPicker setToRecipients: toRecipients];

//添加抄送

//NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];

//[mailPicker setCcRecipients:ccRecipients];

//添加密送

//NSArray *bccRecipients = [NSArray arrayWithObjects:@"fourth@example.com", nil];

//[mailPicker setBccRecipients:bccRecipients];

// 添加一张图片

UIImage *addPic = [UIImage imageNamed: @"Icon@2x.png"];

NSData *imageData = UIImagePNGRepresentation(addPic);            // png

//关于mimeType:http://www.iana.org/assignments/media-types/index.html

[mailPicker addAttachmentData: imageData mimeType: @"" fileName: @"Icon.png"];

NSString *emailBody = @"<font color='red'>eMail</font> 正文";

[mailPicker setMessageBody:emailBody isHTML:YES];

//[self presentModalViewController: mailPicker animated:YES];

[self presentViewController:mailPicker animated:YES completion:nil];

}

#pragma mark - 实现 MFMailComposeViewControllerDelegate

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error

{

//关闭邮件发送窗口

//[self dismissModalViewControllerAnimated:YES];

[self dismissViewControllerAnimated:YES completion:nil];

NSString *msg;

switch (result) {

case MFMailComposeResultCancelled:

msg = @"用户取消编辑邮件";

break;

case MFMailComposeResultSaved:

msg = @"用户成功保存邮件";

break;

case MFMailComposeResultSent:

msg = @"用户点击发送,将邮件放到队列中,还没发送";

break;

case MFMailComposeResultFailed:

msg = @"用户试图保存或者发送邮件失败";

break;

default:

msg = @"";

break;

}

[self alertWithMessage:msg];

}

- (void)alertWithMessage:(NSString*)message

{

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil

message:message

delegate:nil

cancelButtonTitle:@"确定"

otherButtonTitles:nil, nil];

[alert show];

}

发送邮件--MFMailComposeViewController的更多相关文章

  1. iOS-----MFMessageCompose 和 MFMailComposeViewController的使用方法

    MFMessageCompose 和 MFMailComposeViewController的使用方法 使用MFMessageComposeViewCOntroller发短信 应用想自己提供界面让用户 ...

  2. IOS,发短信,发邮件,打电话

    今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点.1.1.发短信(1)——URL // ...

  3. iOS7 StatusBar 使用小结

    1. 样式 2. 显示和隐藏 3. 动画效果 4. 默认无StatusBar 其他 iOS7 中的StatusBar和之前版本的相比发生了很大变化,在iOS7下对statusbar的使用需要全新的方法 ...

  4. 仿简书分享:UIActivityViewController系统原生分享

    接下来介绍UIActivityViewController: 1. 创建要分享的数据内容,加在一个数组 ActivityItems里. NSString *textToShare = @"我 ...

  5. iOS- 如何将应用集成发短信、发邮件、打电话

    今天把APP里常用小功能 例如发短信.发邮件.打电话. 全部拿出来简单说说它们的实现思路. 1.发短信 实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点. 1.1.发短信(1)——URL ...

  6. iOS打电话、发短信、发邮件功能开发

    本文转载至 http://www.lvtao.net/ios/506.html 今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主 ...

  7. UIActivityViewController实现系统原生分享

    代码地址如下:http://www.demodashi.com/demo/11042.html 一.效果预览 二.接下来介绍UIActivityViewController,跟我动手做 1.创建要分享 ...

  8. MFMailComposeViewController发送邮件的实例

    本文转载至 http://blog.csdn.net/liufeng520/article/details/7585140   iPhone API已经提供了系统写邮件界面的接口,使用MFMailCo ...

  9. MFMailComposeViewController发送邮件

    1.iPhone API已经提供了系统写邮件界面的接口,使用MFMailComposeViewController,用来显示界面. 2.项目中需要添加MessageUi.framework.头文件加入 ...

随机推荐

  1. tensorflow serving 之minist_saved_model.py解读

    最近在学习tensorflow serving,但是就这样平淡看代码可能觉得不能真正思考,就想着写个文章看看,自己写给自己的,就像自己对着镜子演讲一样,写个文章也像自己给自己讲课,这样思考的比较深,学 ...

  2. vue set

    Vue 可以通过数组变异的方法可以控制数组的增减,却不能更改数组及对象,vue可以通过set方法改变数组的长度,改变某项的值,在组件中可以使用$set方法改变数组长度和某项的值 调用方法:Vue.se ...

  3. 使用idea+gradle建立SSM项目

    目录: 一.创建一个gradle项目   二 .在gradle中创建SSM项目 一 .创建一个gradle项目 第一步: 打开我们的IDEA工具,选择创建一个新项目 第二步:这里会让你选择创建一个什么 ...

  4. CentOS6编译安装php5.3

    一.CentOS6编译安装php5.3 1.安装扩展 yum install -y openssl-devel traceroute libtool unzip gcc gcc-c++ autocon ...

  5. spark基本组件与概念

    数据结构 核心之数据集RDD 俗称为弹性分布式数据集.Resilient Distributed Datasets,意为容错的.并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的 ...

  6. thymeleaf 获取sessionid

    参考https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html ${#session.id}

  7. 无法加载DLL"***.dll":找不到指定的模块

    加载dll的路径不对. 绝对路径不合适,可以换成相对路径. 比如: 把dll放入bin目录下的debug或者release下,然后就可以直接“test.dll”了.不用加路径了. 注意:路径必须与发布 ...

  8. jquery mobil 和页面适应

    <meta name="viewport" content="width=device-width" />

  9. Dbutils 连接数据库

    用了JDBC后接着学习Dbutils连接数据库 1.添加驱动包 Class.forName("oracle.jdbc.driver.OracleDriver"); 2.获取数据库连 ...

  10. console报错:No mapping found for HTTP request with URI(xxx)

    console报错:No mapping found for HTTP request with URI(xxx) 报错可能原因: 1;contorl未加载成功 2;资源访问失败(所有访问全部被Dis ...