首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS应用内发送邮件

iOS应用内发送邮件

原创
作者头像
用户8671053
修改2021-11-01 09:19:04
修改2021-11-01 09:19:04
89700
代码可运行
举报
文章被收录于专栏:码农的生活码农的生活
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
iPhone API已经提供了系统写邮件界面的接口,使用MFMailComposeViewController,用来显示界面.

项目中需要添加MessageUi.framework。头文件加入MFMailComposeViewControllerDelegate。#import <MessageUI/MessageUI.h>

sendMailViewController.m文件的实现:

(void)viewDidLoad

{

  UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];

  button.frame = CGRectMake(0, 40, 320, 50);

  [button setTitle: @"Mail" forState: UIControlStateNormal];

  [button addTarget: self action: @selector(sendEMail) forControlEvents: UIControlEventTouchUpInside];

  [self.view addSubview: button];

}

(void) alertWithTitle: (NSString )title msg: (NSString )msg

{

  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title

                                              message:msg   
                                             delegate:nil   
                                    cancelButtonTitle:@"确定"   
                                    otherButtonTitles:nil];  
 
[alert show];

  [alert release];

}


//点击按钮后,触发这个方法

-(void)sendEMail

{

    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));

if (mailClass != nil)  
{  
    if ([mailClass canSendMail])  
    {  
        [self displayComposerSheet];  
    }   
    else   
    {  
        [self launchMailAppOnDevice];  
    }  
}   
else   
{  
    [self launchMailAppOnDevice];  
}      
 
}

//可以发送邮件的话

-(void)displayComposerSheet

{

    MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];

mailPicker.mailComposeDelegate = self;  

//设置主题  
[mailPicker setSubject: @"eMail主题"];  

// 添加发送者  
NSArray *toRecipients = [NSArray arrayWithObject: @"first@example.com"];  
//NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];  
//NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com", nil];  
[mailPicker setToRecipients: toRecipients];  
//[picker setCcRecipients:ccRecipients];      
//[picker setBccRecipients:bccRecipients];  

// 添加图片  
UIImage *addPic = [UIImage imageNamed: @"123.jpg"];  
NSData *imageData = UIImagePNGRepresentation(addPic);            // png  
// NSData *imageData = UIImageJPEGRepresentation(addPic, 1);    // jpeg  
[mailPicker addAttachmentData: imageData mimeType: @"" fileName: @"123.jpg"];  

NSString *emailBody = @"eMail 正文";  
[mailPicker setMessageBody:emailBody isHTML:YES];  

[self presentModalViewController: mailPicker animated:YES];  
[mailPicker release];  
 
}

-(void)launchMailAppOnDevice

{

    NSString recipients = @"mailto:first@example.com&subject=my email!";

    //@"mailto:first@example.com?cc=second@example.com,third@example.com&subject=my email!";

    NSString body = @"&body=email body!";

NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];  
email = [email stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];  

[[UIApplication sharedApplication] openURL: [NSURL URLWithString:email]];  
 
}

(void)mailComposeController:(MFMailComposeViewController *)controller

    didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error   
 
{

  NSString *msg;
switch (result)

  {

  case MFMailComposeResultCancelled:  
      msg = @"邮件发送取消";  
      break;  
  case MFMailComposeResultSaved:  
      msg = @"邮件保存成功";  
      [self alertWithTitle:nil msg:msg];  
      break;  
  case MFMailComposeResultSent:  
      msg = @"邮件发送成功";  
      [self alertWithTitle:nil msg:msg];  
      break;  
  case MFMailComposeResultFailed:  
      msg = @"邮件发送失败";  
      [self alertWithTitle:nil msg:msg];  
      break;  
  default:  
      break;  
 
}
[self dismissModalViewControllerAnimated:YES];

}  </pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档