iOS开发-发送邮件及短信

作者刘文涛
转载请注明出处

前言

在iOS开发中,有时候我们会需要用到发送邮件及短信的功能。我们还可以通过发送邮件来接收用户反馈的崩溃通知等等。我用的是iOS原生自带的MFMailComposeViewController来实现的。他不会使程序进入后台,使用模态弹出邮件或短信发送界面。

代码示例

1.发送邮件

使用前需要导入框架:MessageUI.framework
在使用的controller中导入头文件:
#import
实现代理:

获取用户是否设置了邮箱账户:

if ([MFMailComposeViewController canSendMail]) { 
        // 用户已设置邮件账户
        [self sendEmailAction]; // 调用发送邮件的代码
    }else{
        NSLog(@"用户未设置邮箱账户");
    }

sendEmailAction方法代码:

- (void)sendEmailAction
{
    // 邮件服务器
    MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init];
    // 设置邮件代理
    [mailCompose setMailComposeDelegate:self];

    // 设置邮件主题
    [mailCompose setSubject:@"我是邮件主题"];

    // 设置收件人
    [mailCompose setToRecipients:@[@"邮箱号码"]];
    // 设置抄送人
    [mailCompose setCcRecipients:@[@"邮箱号码"]];
    // 设置密抄送
    [mailCompose setBccRecipients:@[@"邮箱号码"]];

    /**
     *  设置邮件的正文内容
     */
    NSString *emailContent = @"邮件内容...";
    // 是否为HTML格式
    [mailCompose setMessageBody:emailContent isHTML:NO];
    // 如使用HTML格式,则为以下代码
//    [mailCompose setMessageBody:@"

Hello

World!

" isHTML:YES]; /** * 添加附件 */ UIImage *image = [UIImage imageNamed:@"image"]; NSData *imageData = UIImagePNGRepresentation(image); [mailCompose addAttachmentData:imageData mimeType:@"" fileName:@"custom.png"]; NSString *file = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"]; NSData *pdf = [NSData dataWithContentsOfFile:file]; [mailCompose addAttachmentData:pdf mimeType:@"" fileName:@"pdf文件"]; // 弹出邮件发送视图 [self presentViewController:mailCompose animated:YES completion:nil]; } ```` MFMailComposeViewControllerDelegate的代理方法: ````objc - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ switch (result) { case MFMailComposeResultCancelled: NSLog(@"取消发送"); break; case MFMailComposeResultFailed: NSLog(@"发送失败"); break; case MFMailComposeResultSaved: NSLog(@"保存草稿文件"); break; case MFMailComposeResultSent: NSLog(@"发送成功"); break; default: break; } // 关闭邮件发送视图 [self dismissViewControllerAnimated:YES completion:nil]; }

2.发送短信

获取用户能否发送短信:

if ([MFMessageComposeViewController canSendText]) {
    [self sendMessageAction];
}else{
    NSLog(@"用户不能发送短信");
}

sendMessageAction方法代码:

//  调用系统API发送短信
- (void)sendMessageAction{

    MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc] init];
    // 设置短信代理
    messageVC.messageComposeDelegate = self;
    // 发送给谁
    messageVC.recipients = @[@"18701235678"];
    // 发送的内容
    messageVC.body = @"hello world";
    // 弹出发送短信的视图
    [self presentViewController:messageVC animated:YES completion:nil];

}

MFMessageComposeViewControllerDelegate的代理方法:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{

    switch (result) {
        case MessageComposeResultCancelled:
            NSLog(@"取消发送");
            break;
        case MessageComposeResultFailed:
            NSLog(@"发送失败");
            break;
        case MessageComposeResultSent:
            NSLog(@"发送成功");
            break;
        default:
            break;
    }

    [self dismissViewControllerAnimated:YES completion:nil];

}

结语

以上代码均在真机(iOS9)进行测试,并通过测试。注意发送邮件的时候需要你绑定邮箱账户。
本文demo。

你可能感兴趣的:(iOS,开发)