http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3848|回复: 7

[新手开发之旅] 【iOS新手开发之旅】发送邮件

[复制链接]
发表于 2018-12-14 12:10:20 | 显示全部楼层 |阅读模式
本帖最后由 竹林风 于 2018-12-15 14:02 编辑

  文章导航  

【iOS新手开发之旅】   http://www.sufeinet.com/thread-24000-1-1.html


系统为我们提供了两种发送Email的方法:

1.OpenUrl
2.MFMailComposeViewController。

OpenUrl

使用openUrl调用系统邮箱是iOS3.0以下实现发邮件功能的主要手段。我们可以通过设置url里面的相关参数来指定邮件的内容,不过缺点也很明显,这样的过程会导致程序暂时退出。如:

[Objective-C] 纯文本查看 复制代码
#pragma mark - 使用系统邮件客户端发送邮件   
-(void)launchMailApp   
{     
    NSMutableString *mailUrl = [[[NSMutableString alloc]init]autorelease];   
    //添加收件人   
    NSArray *toRecipients = [NSArray arrayWithObject: @"first@example.com"];   
    [mailUrl appendFormat:@"mailto:%@", [toRecipients componentsJoinedByString:@","]];   
    //添加抄送   
    NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];     
    [mailUrl appendFormat:@"?cc=%@", [ccRecipients componentsJoinedByString:@","]];   
    //添加密送   
    NSArray *bccRecipients = [NSArray arrayWithObjects:@"fourth@example.com", nil];     
    [mailUrl appendFormat:@"&bcc=%@", [bccRecipients componentsJoinedByString:@","]];   
    //添加主题   
    [mailUrl appendString:@"&subject=my email"];   
    //添加邮件内容   
    [mailUrl appendString:@"&body=<b>email</b> body!"];   
    NSString* email = [mailUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];     
    [[UIApplication sharedApplication] openURL: [NSURL URLWithString:email]];     
}  

MFMailComposeViewController

使用MFMailComposeViewController,我们需要引入MessageUI.framework.通过调用MFMailComposeViewController,可以把邮件发送窗口集成到我们的应用里面,发送邮件就不需要再退出程序了。


1.引用MessageUI.framework
2.在使用的文件中导入MFMailComposeViewController.h头文件
3.实现MFMailComposeViewControllerDelegate,处理邮件发送事件;
4.调用邮件发送窗口前先使用MFMailComposeViewController里面的“canSendMail”方法检查用户是否设置了邮件帐户;
5.初始化MFMailComposeViewController,构造邮件体


发送代码实现:


[Objective-C] 纯文本查看 复制代码
//调出邮件发送窗口
- (void)displayMailPicker
{
    if ([MFMailComposeViewController canSendMail]) {
        // 用户已设置邮件账户
        // 邮件服务器
        MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init];
        // 设置邮件代理
        [mailCompose setMailComposeDelegate:self];
        
        // 设置邮件主题
        [mailCompose setSubject:@"我是邮件主题"];
        
        // 设置收件人
        [mailCompose setToRecipients:@[@"1780575208@qq.com"]];
        // 设置抄送人
        [mailCompose setCcRecipients:@[@"1780575208@qq.com"]];
        // 设置密抄送
        [mailCompose setBccRecipients:@[@"1780575208@qq.com"]];
        
        /**
         *  设置邮件的正文内容
         */
        NSString *emailContent = @"我是邮件内容";
        // 是否为HTML格式
        [mailCompose setMessageBody:emailContent isHTML:NO];
        // 如使用HTML格式,则为以下代码
        //    [mailCompose setMessageBody:@"<html><body><p>Hello</p><p>World!</p></body></html>" isHTML:YES];
        
        /**
         *  添加附件
         */
        UIImage *image = [UIImage imageNamed:@"apple"];
        NSData *imageData = UIImagePNGRepresentation(image);
        [mailCompose addAttachmentData:imageData mimeType:@"" fileName:@"apple"];
        
        NSString *file = [[NSBundle mainBundle] pathForResource:@"info" ofType:@"plist"];
        NSData *pdf = [NSData dataWithContentsOfFile:file];
        [mailCompose addAttachmentData:pdf mimeType:@"" fileName:@"file"];
        
        // 弹出邮件发送视图
        [self presentViewController:mailCompose animated:YES completion:nil];
        
    }else{
        NSLog(@"请先设置登录邮箱号");
    }
}



MFMailComposeViewControllerDelegate的代理方法


[Objective-C] 纯文本查看 复制代码
#pragma mark - 实现 MFMailComposeViewControllerDelegate
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    //关闭邮件发送窗口
    [self dismissViewControllerAnimated:YES completion:^{
        NSString *msg;
        switch (result) {
            case MFMailComposeResultCancelled:
                msg = @"用户取消编辑邮件";
                break;
            case MFMailComposeResultSaved:
                msg = @"用户成功保存邮件";
                break;
            case MFMailComposeResultSent:
                msg = @"用户点击发送,将邮件放到队列中,还没发送";
                break;
            case MFMailComposeResultFailed:
                msg = @"用户试图保存或者发送邮件失败";
                break;
            default:
                msg = @"";
                break;
        }
        NSLog(@"%@",msg);
    }];
}


附件: Test-SendEmail.zip (169.38 KB, 下载次数: 0)


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2018-12-14 12:13:00 | 显示全部楼层
注:
1.测试需用真机测试
2.系统邮件需要登录至少一个邮箱帐户
IMG_4783.PNG
发表于 2018-12-14 12:10:45 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-14 14:48:14 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-12-14 14:48:20 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-12-14 15:19:48 | 显示全部楼层
楼主加油,我们都看好你哦。
发表于 2018-12-15 12:03:59 | 显示全部楼层
看到这帖子真是高兴!
发表于 2018-12-15 13:59:09 | 显示全部楼层
真是难得给力的帖子啊。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-22 11:43

© 2014-2021

快速回复 返回顶部 返回列表