IOS自带Email的两种方法实例详解
需积分: 0 37 浏览量
更新于2020-08-30
收藏 53KB PDF 举报
在iOS平台上,内置的电子邮件功能提供了两种主要方法供开发者在应用程序中集成发送邮件的功能。这两种方法分别是使用`openURL`和`MFMailComposeViewController`。接下来我们将深入探讨这两种方法的细节。
1. **使用`openURL`发送邮件**
在iOS 3.0之前,`openURL`是开发人员用来唤起系统邮件客户端发送邮件的常用方法。通过构建一个特定格式的URL字符串,可以设置邮件的收件人、抄送人、密送人、主题以及邮件正文。这种方法的代码实现简单,但有一个明显的缺点:当用户点击发送邮件时,应用程序会被迫退出,用户体验不是很好。以下是一个使用`openURL`发送邮件的示例:
```objc
-(void)launchMailApp {
NSMutableString *mailUrl = [NSMutableString stringWithString:@"mailto:"];
NSArray *toRecipients = [NSArray arrayWithObject:@"first@example.com"];
[mailUrl appendFormat:@"%@,", [toRecipients componentsJoinedByString:@","]];
// 添加其他收件人、抄送人和密送人
// 添加主题和邮件正文
[mailUrl appendString:@"?subject=my email&body=email body!"];
NSString* encodedUrl = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:encodedUrl]];
}
```
2. **使用`MFMailComposeViewController`**
自iOS 3.0起,Apple引入了`MFMailComposeViewController`,这是一个位于`MessageUI`框架中的视图控制器,允许在应用程序内部创建邮件发送界面。这样,用户在发送邮件时,应用不会退出,提供了更好的用户体验。使用`MFMailComposeViewController`的步骤如下:
1. 在项目中导入`MessageUI.framework`。
2. 在需要用到的类中引入`MFMailComposeViewController.h`头文件。
3. 实现`MFMailComposeViewControllerDelegate`协议,以便处理邮件发送的结果。
4. 在显示邮件视图控制器之前,使用`[MFMailComposeViewController canSendMail]`检查设备上是否配置了邮件账户。
5. 初始化`MFMailComposeViewController`对象,并设置邮件的相关属性,例如收件人、主题、正文等,然后将其呈现给用户。
下面是一个简单的`MFMailComposeViewController`使用示例:
```objc
#import <MessageUI/MessageUI.h>
@interface ViewController : UIViewController <MFMailComposeViewControllerDelegate>
// ...其他方法
-(void)showMailComposerView {
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *mailComposeViewController = [[MFMailComposeViewController alloc] init];
mailComposeViewController.mailComposeDelegate = self;
[mailComposeViewController setToRecipients:@[@"recipient@example.com"]];
[mailComposeViewController setSubject:@"My Email"];
[mailComposeViewController setMessageBody:@"Email Body" isHTML:NO];
[self presentViewController:mailComposeViewController animated:YES completion:nil];
} else {
NSLog(@"无法发送邮件。请在设备上配置邮件账户。");
}
}
// 实现MFMailComposeViewControllerDelegate方法
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
switch (result) {
case MFMailComposeResultCancelled:
NSLog(@"邮件发送取消");
break;
case MFMailComposeResultSaved:
NSLog(@"邮件保存为草稿");
break;
case MFMailComposeResultSent:
NSLog(@"邮件已发送");
break;
case MFMailComposeResultFailed:
NSLog(@"邮件发送失败: %@", [error localizedDescription]);
break;
default:
break;
}
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
```
`openURL`适合快速实现简单的邮件发送功能,而`MFMailComposeViewController`提供了更丰富的功能和更好的用户体验,是更推荐的选择。然而,需要注意的是,`MFMailComposeViewController`仅支持文本邮件,如果需要发送HTML邮件或者附加文件,可能需要寻找其他的解决方案。
weixin_38690508
- 粉丝: 5
- 资源: 925
最新资源
- java毕设项目之ssm基于Vue.js的在线购物系统的设计与实现+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm汽车养护管理系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm简易版营业厅宽带系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm绿色农产品推广应用网站+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm人事管理信息系统+jsp(完整前后端+说明文档+mysql+lw).zip
- 自考04741《计算机网络原理》试题及答案2016-2018
- java毕设项目之ssm社区管理与服务的设计与实现+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm社区文化宣传网站+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm实验室耗材管理系统设计与实现+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm网络游戏公司官方平台设计与实现+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm蜀都天香酒楼的网站设计与实现+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm网上医院预约挂号系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm网上花店设计+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm网上服装销售系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm小型企业办公自动化系统的设计和开发+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm物流管理系统设计与实现+jsp(完整前后端+说明文档+mysql+lw).zip