IOS中发送邮件的两种方式

来源:互联网 发布:2016网络流行成语 编辑:程序博客网 时间:2024/05/19 18:39

ViewController.h

#import <UIKit/UIKit.h>#import <MessageUI/MessageUI.h>@interface ViewController : UIViewController<MFMailComposeViewControllerDelegate>@end

ViewController.m

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{    [super viewDidLoad];        UIButton *mailToURLButton = [UIButton buttonWithType:UIButtonTypeCustom];    [mailToURLButton setFrame:CGRectMake(50, 100, 220, 50)];    [mailToURLButton setBackgroundColor:[UIColor orangeColor]];    [mailToURLButton setTitle:@"使用mailToURL发送邮件" forState:UIControlStateNormal];    [mailToURLButton addTarget:self action:@selector(mailToURLButtonAct) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:mailToURLButton];        UIButton *mailInAPPButton = [UIButton buttonWithType:UIButtonTypeCustom];    [mailInAPPButton setFrame:CGRectMake(50, 250, 220, 50)];    [mailInAPPButton setBackgroundColor:[UIColor orangeColor]];    [mailInAPPButton setTitle:@"使用mailInAPP发送邮件" forState:UIControlStateNormal];    [mailInAPPButton addTarget:self action:@selector(mailInAPPButtonAct) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:mailInAPPButton];}/** *  通多调用系统的 urlScheme来发送邮件 *  会离开当前的APP */- (void)mailToURLButtonAct{    /*     Mailto后为收件人地址,cc后为抄送地址,bcc后为密件抄送地址,subject后为邮件的主题,body后为邮件的内容,如果Mailto后面同时有多个参数的话,第一个参数必须以“?”开头,后面的每一个都以“&”开头     多个邮件地址中间用逗号(",")隔开     subject和body需要进行url编码 否则会打不开系统邮件 返回NO     */    NSString *content =  [@"邮件 内容" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    NSString *urlString = [NSString stringWithFormat:@"mailto:24129114@qq.com,test1@qq.com?cc=j24129114@163.com,test2@qq.com&bcc=test3@qq.com,test4@qq.com&subject=hello-word&body=%@",                           content];    BOOL flag = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];    if (!flag) {        NSLog(@"不能打开应用程序");    }}- (void)mailInAPPButtonAct{    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));        if (mailClass != nil){        if ([mailClass canSendMail]){            [self sendEmail];        }else{            //这里可以通过调用系统的URLScheme来发送邮件        }    }else{         //这里可以通过调用系统的URLScheme来发送邮件    }}/** *  在APP里面通过调用官方接口开发送邮件 需要引入MessageUI.framework 并实现MFMailComposeViewControllerDelegate *  不会离开当前的APP 并且可以发送附近(比如图片) */- (void)sendEmail{    MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];        mailPicker.mailComposeDelegate = self;        //设置主题    [mailPicker setSubject: @"eMail 主题"];        [mailPicker setToRecipients: [NSArray arrayWithObject: @"24129114@qq.com"]];      //收件人    [mailPicker setCcRecipients: [NSArray arrayWithObject: @"sencond@example.com"]];    //抄送    [mailPicker setBccRecipients:[NSArray arrayWithObject: @"third@example.com"]];      //密抄        // 添加图片    UIImage *addPic = [UIImage imageNamed: @"cell_image.png"];    //NSData *imageData = UIImagePNGRepresentation(addPic);            // png    NSData *imageData = UIImageJPEGRepresentation(addPic, 1);    // jpeg        //fileName 对应的值是邮件中附件的名字 不能为nil和 @""    [mailPicker addAttachmentData: imageData mimeType: @"" fileName: @"file.png"];        NSString *emailBody = @"eMail 正文";    [mailPicker setMessageBody:emailBody isHTML:YES];        [self presentModalViewController: mailPicker animated:YES];}#pragma mark - MFMailComposeViewControllerDelegate Method- (void)mailComposeController:(MFMailComposeViewController *)controller          didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{    NSString *msg;        switch (result)    {        case MFMailComposeResultCancelled:            msg = @"邮件发送取消";            break;        case MFMailComposeResultSaved:            msg = @"邮件保存成功";            break;        case MFMailComposeResultSent:            msg = @"邮件发送成功";            break;        case MFMailComposeResultFailed:            msg = @"邮件发送失败";            break;        default:            break;    }    NSLog(@"status:%@",msg);    [self dismissModalViewControllerAnimated:YES];}@end



0 0
原创粉丝点击