当前位置: 移动技术网 > IT编程>移动开发>IOS > IOS自带Email的两种方法实例详解

IOS自带Email的两种方法实例详解

2019年07月24日  | 移动技术网IT编程  | 我要评论

重庆当代医院,林杰妮,猜不透简谱

ios自带email的两种方法实例详解

ios系统框架提供的两种发送email的方法:openurl 和 mfmailcomposeviewcontroller。借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能。 

1.openurl

使用openurl调用系统邮箱客户端是我们在ios3.0以下实现发邮件功能的主要手段。我们可以通过设置url里的相关参数来指定邮件的内容,不过其缺点很明显,这样的过程会导致程序暂时退出。下面是使用openurl来发邮件的一个小例子:
#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]];   
} 
 

2.mfmailcomposeviewcontroller

mfmailcomposeviewcontroller是在ios3.0新增的一个接口,它在messageui.framework中。通过调用

mfmailcomposeviewcontroller,可以把邮件发送窗口集成到我们的应用里,发送邮件就不需要退出程序了。

mfmailcomposeviewcontroller的使用方法:

1.项目中引入messageui.framework;
2.在使用的文件中导入mfmailcomposeviewcontroller.h头文件;
3.实现mfmailcomposeviewcontrollerdelegate,处理邮件发送事件;
4.调出邮件发送窗口前先使用mfmailcomposeviewcontroller里的“+ (bool)cansendmail”方法检查用户是否设置了邮件账户;
5.初始化mfmailcomposeviewcontroller,构造邮件体 

//  
// viewcontroller.h  
// maildemo  
//  
// created by luoyl on 12-4-4.  
// copyright (c) 2012年 http://luoyl.info. all rights reserved.  
//  
 
#import <uikit/uikit.h>  
#import <messageui/mfmailcomposeviewcontroller.h>  
 
@interface viewcontroller : uiviewcontroller<mfmailcomposeviewcontrollerdelegate>  
 
@end 

#pragma mark - 在应用内发送邮件  
//激活邮件功能  
- (void)sendmailinapp  
{  
  class mailclass = (nsclassfromstring(@"mfmailcomposeviewcontroller"));  
  if (!mailclass) {  
    [self alertwithmessage:@"当前系统版本不支持应用内发送邮件功能,您可以使用mailto方法代替"];  
    return;  
  }  
  if (![mailclass cansendmail]) {  
    [self alertwithmessage:@"用户没有设置邮件账户"];  
    return;  
  }  
  [self displaymailpicker];  
}  
 
//调出邮件发送窗口  
- (void)displaymailpicker  
{  
  mfmailcomposeviewcontroller *mailpicker = [[mfmailcomposeviewcontroller alloc] init];   
  mailpicker.mailcomposedelegate = self;   
    
  //设置主题   
  [mailpicker setsubject: @"email主题"];   
  //添加收件人  
  nsarray *torecipients = [nsarray arraywithobject: @"first@example.com"];  
  [mailpicker settorecipients: torecipients];   
  //添加抄送  
  nsarray *ccrecipients = [nsarray arraywithobjects:@"second@example.com", @"third@example.com", nil];   
  [mailpicker setccrecipients:ccrecipients];     
  //添加密送  
  nsarray *bccrecipients = [nsarray arraywithobjects:@"fourth@example.com", nil];   
  [mailpicker setbccrecipients:bccrecipients];   
    
  // 添加一张图片   
  uiimage *addpic = [uiimage imagenamed: @"icon@2x.png"];   
  nsdata *imagedata = uiimagepngrepresentation(addpic);      // png    
  //关于mimetype:http://www.iana.org/assignments/media-types/  
  [mailpicker addattachmentdata: imagedata mimetype: @"" filename: @"icon.png"];   
  
  //添加一个pdf附件  
  nsstring *file = [self fullbundlepathfromrelativepath:@"高质量c++编程指南.pdf"];  
  nsdata *pdf = [nsdata datawithcontentsoffile:file];  
  [mailpicker addattachmentdata: pdf mimetype: @"" filename: @"高质量c++编程指南.pdf"];   
 
  nsstring *emailbody = @"<font color='red'>email</font> 正文";   
  [mailpicker setmessagebody:emailbody ishtml:yes];   
  [self presentmodalviewcontroller: mailpicker animated:yes];   
  [mailpicker release];   
}  
 
#pragma mark - 实现 mfmailcomposeviewcontrollerdelegate  
- (void)mailcomposecontroller:(mfmailcomposeviewcontroller *)controller didfinishwithresult:(mfmailcomposeresult)result error:(nserror *)error  
{  
  //关闭邮件发送窗口  
  [self dismissmodalviewcontrolleranimated:yes];  
  nsstring *msg;   
  switch (result) {   
    case mfmailcomposeresultcancelled:   
      msg = @"用户取消编辑邮件";   
      break;   
    case mfmailcomposeresultsaved:   
      msg = @"用户成功保存邮件";   
      break;   
    case mfmailcomposeresultsent:   
      msg = @"用户点击发送,将邮件放到队列中,还没发送";   
      break;   
    case mfmailcomposeresultfailed:   
      msg = @"用户试图保存或者发送邮件失败";   
      break;   
    default:   
      msg = @"";  
      break;   
  }   
  [self alertwithmessage:msg];  
}  

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网