- 浏览: 586649 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
JYY282:
[i][/i]
Ecshop与Shopex的比较 -
qq247890212:
我也遇见这问题了,真诡异。重新下载个猫换了就好了。 太浪费时间 ...
诡异:ClassNotFoundException: org.springframework.web.filter.CharacterEncoding
From: http://www.cocoachina.com/newbie/basic/2011/1226/3782.html
原文:wsqwsq000
iOS系统框架提供的两种发送Email的方法

1、使用openURL来实现发邮件的功能:
NSString *url = [NSString stringWithString: @"mailto:foo@example.com?cc=bar@example.com& subject=Greetings%20from%20Cupertino!& body=Wish%20you%20were%20here!"]; [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
缺点很明显,这样的过程会导致程序暂时退出,即使在iOS 4.x支持多任务的情况下,这样的过程还是会让人觉得不是很方便。
2、使用MFMailComposeViewController来实现发邮件的功能,它在MessageUI.framework中,你需要在项目中加入该框架,并在使用的文件中导入MFMailComposeViewController.h头文件。
#import <MessageUI/MFMailComposeViewController.h>; MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init]; controller.mailComposeDelegate = self; [controller setSubject:@"My Subject"]; [controller setMessageBody:@"Hello there." isHTML:NO]; [self presentModalViewController:controller animated:YES]; [controller release];
使用该方法实现发送Email是最常规的方法,该方法有相应的MFMailComposeViewControllerDelegate事件:
- (void)mailComposeController: (MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error; { if (result == MFMailComposeResultSent) { NSLog(@"It's away!"); } [self dismissModalViewControllerAnimated:YES]; }
有一些相关的数据结构的定义在头文件中都有具体的描述:
enum MFMailComposeResult { MFMailComposeResultCancelled,//用户取消编辑邮件 MFMailComposeResultSaved,//用户成功保存邮件 MFMailComposeResultSent,//用户点击发送,将邮件放到队列中 MFMailComposeResultFailed//用户试图保存或者发送邮件失败 }; typedef enum MFMailComposeResult MFMailComposeResult; // iOS3.0以上有效
在头文件中MFMailComposeViewController的部分方法顺便提及:
+ (BOOL)canSendMail __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); //如果用户没有设置邮件账户,则会返回NO,你可以用根据返回值来决定是 使用MFMailComposeViewController 还是 mailto://的传统方法, 也或者, 你可以选择上文中提到的skpsmtpmessage来实现发送Email的功能。
- (void)addAttachmentData:(NSData *)attachment mimeType:(NSString *)mimeType fileName:(NSString *)filename; //NSData类型的attachment自然不必多说,关于mimeType需要一点说明, 官方文档里给出了一个链接http://www.iana.org/assignments/media-types/ , 这里列出的所有的类型都应该支持。关于mimeType的用处,更多需要依靠搜索引擎了 =]
第二种方法的劣势也很明显,iOS系统替我们提供了一个mail中的UI,而我们却完全无法对齐进行订制,这会让那些定制化成自己风格的App望而却步,因为这样使用的话无疑太突兀了。
3、我们可以根据自己的UI设计需求来定制相应的视图以适应整体的设计。可以使用比较有名的开源SMTP协议来实现。
在SKPSMTPMessage类中,并没有对视图进行任何的要求,它提供的都是数据层级的处理,你之需要定义好相应的发送要求就可以实现邮件发送了。至于是以什么样的方式获取这些信息,就可以根据软件的需求来确定交互方式和视图样式了。
SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init]; testMsg.fromEmail = @"test@gmail.com"; testMsg.toEmail =@"to@gmail.com"; testMsg.relayHost = @"smtp.gmail.com"; testMsg.requiresAuth = YES; testMsg.login = @"test@gmail.com"; testMsg.pass = @"test"; testMsg.subject = [NSString stringWithCString:"测试" encoding:NSUTF8StringEncoding]; testMsg.bccEmail = @"bcc@gmail.com"; testMsg.wantsSecure = YES; // smtp.gmail.com doesn't work without TLS! // Only do this for self-signed certs! // testMsg.validateSSLChain = NO; testMsg.delegate = self; NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey, [NSString stringWithCString:"测试正文" encoding:NSUTF8StringEncoding], kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil]; NSString *vcfPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"vcf"]; NSData *vcfData = [NSData dataWithContentsOfFile:vcfPath]; NSDictionary *vcfPart = [NSDictionary dictionaryWithObjectsAndKeys: @"text/directory;\r\n\tx-unix-mode=0644;\r\n\tname=\"test.vcf\"",kSKPSMTPPartContentTypeKey, @"attachment;\r\n\tfilename=\"test.vcf\"",kSKPSMTPPartContentDispositionKey, [vcfData encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil]; testMsg.parts = [NSArray arrayWithObjects:plainPart,vcfPart,nil]; [testMsg send];
该类也提供了相应的Delegate方法来让你更好的获知发送的状态.
-(void)messageSent:(SKPSMTPMessage *)message; -(void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error;
发表评论
-
Objective-C 与 C++ 的异同
2013-04-02 12:03 1564http://www.cnblogs.com/y041039 ... -
Cocos2D-X是全球知名的开源跨平台手机游戏引擎
2013-01-22 10:05 2777http://www.oschina.net/p/cocos ... -
iOS Keyboard 键盘高度变化 自适应
2013-01-15 15:43 3406[[NSNotificationCenter default ... -
iOS使用自定义字体
2012-11-27 12:11 12177From: http://blog.csdn.net/csy1 ... -
4 款类似 Facebook/Path 切换效果的 iOS 组件
2012-11-27 12:03 2224From: http://blog.csdn.net/lia ... -
Path 2.0的UI界面设计详细介绍
2012-11-27 11:56 1490如Path的创始人Dave Morin ... -
史上最全的App Store邮箱列表
2012-11-27 11:51 1287From: http://roybaby.blog.51cto ... -
iOS从info.plist 获取项目的名称及版本号
2012-11-16 10:54 1701From: http://blog.sina.com.cn/s ... -
MapKit annotation drag and drop with callout info update
2012-10-13 10:38 2434http://hollowout.blogspot ... -
NSArray 或NSDictionary 调用writeToFile方法失败原因
2012-08-31 10:03 4524NSArray 或NSDictionary 调用writeTo ... -
如何让IOS应用从容地崩溃
2012-08-30 15:25 1637From: http://www.cocoachina.com ... -
iOS中判断设备系统版本
2012-08-29 17:17 31732在iOS开发中,经常要考虑系统的向下兼容,如果使用 ... -
iOS 汉字转拼音
2012-08-21 16:42 1489From: http://www.cnblogs.com/v2 ... -
iOS模拟器截图工具
2012-08-17 16:35 1691From: http://magicalboy.com/ios ... -
XCode下的iOS单元测试
2012-08-10 17:47 1192From: http://mobile.51cto.com/ ... -
AFNetworking
2012-08-08 10:54 4665AFNetworking on github: https:/ ... -
Wrapping Conventions
2012-08-01 15:54 870Wrapping Conventions ... -
Core Animation如何使显式动画结束时的值直接作用Layer
2012-08-01 14:51 3810(1)使用隐式动画会直接改变layer的属性值,如: ima ... -
How To Debug Memory Leaks with XCode and Instruments Tutoria
2012-07-31 16:30 1072From: http://www.raywenderlich. ... -
Using Properties in Objective-C Tutorial
2012-07-31 16:27 952From: http://www.raywenderlich. ...
相关推荐
iPhone开发秘籍---第二版
iPhone开发秘籍---第二版.zip part2
《iPhone开发指南(中-英文版)》是一本详尽阐述如何开发iPhone应用程序的专业书籍,旨在帮助开发者,无论是初学者还是经验丰富的专业人士,都能深入理解iOS平台上的应用开发过程。这本书的内容涵盖了从基础概念到高级...
iPhone开发系列之二---Objective-C入门知识,是一本很好的书,值得一看
【U-Mail邮件服务器安装与使用全方位指南】 U-Mail是一款专业的邮件服务器软件,广泛应用于企业级邮件系统搭建,提供高效、安全的电子邮件服务。本指南将详细介绍U-Mail的安装过程、配置方法以及日常使用的要点,...
《iPhone开发基础教程-PDF版》是一份专为初学者设计的全面指南,旨在帮助读者掌握iOS应用开发的基础知识和技能。本教程涵盖了从安装开发环境到创建第一个应用的全过程,深入浅出地讲解了iPhone应用程序开发的核心...
《Iphone开发基础教程》-第二章 创建基本项目
《Iphone开发基础教程》-第三章 处理基本交互
苹果iphone开发系列:Objective-C初學者指南 该种语言的最大特色是中括号【】
《Iphone开发基础教程》-第四章 更丰富的用户界面
资源名称:iPhone开发入门到精通视频教程资源目录:【】iOS开发源码系列---工具【】iOS开发源码系列---应用【】iOS开发源码系列---游戏【】iOS开发源码系列---类库与框架【】iOS开发真机测试与发布【】iOS开发视频...
本书对比分析了两种语言的特点,帮助读者理解它们在实际开发中的应用。 #### 2. 开发基础 - **UI界面构建**:书中提供了构建用户界面(UI)的基本指导,包括如何使用Storyboard或XIB文件设计界面,以及如何添加控件和...
AndroidS开发环境搭建---在myeclipse...--IPHONE开发环境搭建 OBject-c开发环境的搭建,Xcode和ios sdk和模拟器的安装,还有我使用的是Vmware里面安装黑苹果,然后进行开发。 黑苹果的下载地址安装文档里面已经注明了。
3. **基本概念与组件**:深入学习Cocos2D-iPhone中的核心概念,如Scene(场景)、Layer(层)、Sprite(精灵)和Node(节点),并介绍如何使用它们构建游戏世界。同时,还会讲解Action(动作)和Timeline(时间轴)...
从给定的文件信息来看,标题、描述以及标签均指向同一主题:“iPhone开发基础教程-PDF完整版part2”。这表明文件主要聚焦于iPhone应用程序开发的基础教程,且为系列教程的第二部分。虽然提供的具体内容非常有限,仅...
在IT行业中,iOS应用开发是一项高需求的技能,而学习这一领域的基础往往从掌握Objective-C.2.0和iPhone开发开始。"iPhone开发基础教程&Objective-C.2.0程序设计"是为初学者量身定制的学习资源,旨在帮助他们踏入这个...
iphone开发秘籍中文第二版,pdf'高清版,好不容易找到的。欢迎下载
苹果iOS开发中文电子书推荐:5--iPhone开发秘籍中文实践教程PART3
在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,其Cocos2d-iPhone版本专为Objective-C编程语言设计。本主题主要关注Cocos2d-iPhone中的“动作”(Actions)机制,这是一个强大的工具,用于创建各种动画效果...
标题“iphone-sdk-2.0-headers”指向的是苹果公司早期发布的iPhone SDK(软件开发工具包)的一个组件,专门包含了2.0版本的头文件。这些头文件是开发者编写iOS应用时的重要参考资料,它们定义了各种API接口、类、...