本文档版权归NickTang所有,没有本人书面或电子邮件允许,不许转载,摘录,发表。多谢!
我们很多时候需要在iOS程序中内置邮件发送功能,而这个例子基本上提供了我们所需要的所有功能。
注意一下几点
1.这个程序必须在设备上运行,关于如何在设备上运行程序,不是本文需要讲的,我会在以后的文章中讲述。
2.你的设备必须配置好一个邮件帐户,不然你没法看到好的效果。
3.关于如何发送多个附件,我会在最后提到。
4.基本的代码不会再分析,基础部分请看我前面的文章。
5.在你自己建立的工程中,比如加入后面这个framework:MessageUI.framework
分析代码如下:
1.
-(IBAction)showPicker:(id)sender
{
// This sample can run on devices running iPhone OS 2.0 or later
// The MFMailComposeViewController class is only available in iPhone OS 3.0 or later.
// So, we must verify the existence of the above class and provide a workaround for devices running
// earlier versions of the iPhone OS.
// We display an email composition interface if MFMailComposeViewController exists and the device can send emails.
// We launch the Mail application on the device, otherwise.
//上面的解释的非常清楚,关于这些类和api在那个版本中引入,必须加以关注。
//下面是一个动态运行期查询类名的一个很好的例子,不解释了,因为在前面的文章有解释到。
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass !=
nil)
{
// We must always check whether the current device is configured for sending emails
if ([mailClass
canSendMail])
{
[self
displayComposerSheet];
}
else
{
[self
launchMailAppOnDevice];
}
}
else
{
[self
launchMailAppOnDevice];
}
}
所以重点关注函数displayComposerSheet:
-(void)displayComposerSheet
{
MFMailComposeViewController *picker = [[MFMailComposeViewController
alloc]
init];
picker.mailComposeDelegate =
self;
[picker
setSubject:@"Hello from California!"];
// Set up recipients
NSArray *toRecipients = [NSArray
arrayWithObject:@"first@example.com"];
NSArray *ccRecipients = [NSArray
arrayWithObjects:@"second@example.com",
@"third@example.com", nil];
NSArray *bccRecipients = [NSArray
arrayWithObject:@"fourth@example.com"];
[picker
setToRecipients:toRecipients];
[picker
setCcRecipients:ccRecipients];
[picker
setBccRecipients:bccRecipients];
// Attach an image to the email
NSString *path = [[NSBundle
mainBundle] pathForResource:@"rainy"
ofType:@"png"];
NSData *myData = [NSData
dataWithContentsOfFile:path];
[picker
addAttachmentData:myData mimeType:@"image/png"
fileName:@"rainy"];
//代码非常清楚,我也不加以解释了,注意下面这个注释掉的地方,很多人问如何发送多个附件,就是下面演示的这样就可以多加一个附件,
//既多次调用addAttachmentData:fileName:
/*path = [[NSBundle mainBundle] pathForResource:@"circle" ofType:@"png"];
myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"circle"];*/
// Fill out the email body text
NSString *emailBody =
@"It is raining in sunny California!";
[picker
setMessageBody:emailBody
isHTML:NO];
[self
presentModalViewController:picker animated:YES];
[picker
release];
}
在点击发送后,协议
MFMailComposeViewControllerDelegate
的下面这个函数会被调用。
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error
{
message.hidden
= NO;
// Notifies users about errors associated with the interface
switch (result)
{
case
MFMailComposeResultCancelled:
message.text
= @"Result: canceled";
break;
case
MFMailComposeResultSaved:
message.text
= @"Result: saved";
break;
case
MFMailComposeResultSent:
message.text
= @"Result: sent";
break;
case
MFMailComposeResultFailed:
message.text
= @"Result: failed";
break;
default:
message.text
= @"Result: not sent";
break;
}
[self
dismissModalViewControllerAnimated:YES];
}
上面的这个代码也是很简单的,所以也不再解释。
分享到:
相关推荐
vuforia-sdk-ios-6-5-25.zip vuforia sdk for iOS Use the Vuforia SDK to build Android, iOS, and UWP(win10+) applications for mobile devices and digital eyewear. Apps can be built with Android Studio, ...
思科 cisco ios 镜像 c7200-advipservicesk9-mz.124-2.T.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用.
思科 cisco ios 镜像 unzip-c7200-advsecurityk9-mz.124-11.T.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用
思科 cisco ios 镜像 c7200-is-mz.124-19b.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用.
2010年推出: CISCO2950最新IOS映像:c2950-i6k2l2q4-mz.121-22.EA14
思科 cisco 镜像 ios c2600-adventerprisek9-mz.124-18.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用
ubuntu-18.04.5-desktop-amd64.iso,ubuntu18.04.5镜像,官方资源,百度网盘下载链接
这个项目的源代码被压缩在一个名为"iOS-Tagent-master.zip"的文件中,里面包含了实现自动化测试所需的全部组件和资源。在本文中,我们将深入探讨iOS自动化测试的关键概念、技术以及iOS-Tagent-master项目的核心特点...
Python是iOS-private-api-checker的主要编程语言,以其简洁明了的语法和强大的库支持而广受开发者喜爱。在这个项目中,Python负责解析Objective-C或Swift代码,识别可能引用私有API的函数和方法。通过使用Python的...
cisco 2950 ios c2950-i6k2l2q4-mz.121-22.EA13.bin
通过阅读官方文档或源代码,我们可以更深入地了解这个库的工作原理,从而更好地利用它来满足我们的需求。 总的来说,`py_ios_device-2.1.5.tar.gz`是Python开发者处理iOS设备的强大工具。它简化了iOS设备的管理和...
《Cisco Catalyst 交换机IOS:c2691-advsecurityk9-mz.124-11.T2.bin 深度解析》 在IT领域,Cisco Catalyst系列交换机以其高性能、高可靠性以及丰富的功能深受业界青睐。其中,交换机的操作系统——Cisco IOS...
CISCO ASA 5505 最新IOS asa844-1-8k.bin
思科 cisco ios 镜像 c3745-advipservicesk9-mz.124-3c.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用
cisco交换机IOS unzip-c3725-adventerprisek9-mz.124-15.T5.bin,比较大,这里是part1
总之,"ios-URLNavi.zip"项目提供了一个实用的例子,教导iOS开发者如何利用URL Scheme与第三方地图应用进行交互,实现灵活的导航功能。通过深入研究和理解该项目,开发者不仅可以提升自己的编程技能,还能更好地理解...
《iOS 5编程实战秘籍》源代码 这个压缩包包含的是《iOS 5 Programming Cookbook》一书的配套源代码,这本书是针对iOS开发者的宝贵资源,尤其对于那些正在学习和提升iOS 5应用程序开发技能的程序员来说。作者通过一...
FFmpeg-iOS-build-script-master.zip 是一个专门为iOS平台构建FFmpeg库的Objective-C脚本项目。FFmpeg是一个开源的多媒体处理框架,包含了音频编码、解码、转换以及视频处理等功能,广泛应用于移动设备上的多媒体...
Cisco 1841 IOS c1841-adventerprisek9-mz.151-4.M8.bin
IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+...