本文转载至 http://blog.csdn.net/liufeng520/article/details/7585140
 
  1. iPhone API已经提供了系统写邮件界面的接口,使用MFMailComposeViewController,用来显示界面.
  2. 项目中需要添加MessageUi.framework。头文件加入MFMailComposeViewControllerDelegate。#import <MessageUI/MessageUI.h>
  3. sendMailViewController.m文件的实现:
  4. - (void)viewDidLoad
  5. {
  6. UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];
  7. button.frame = CGRectMake(0, 40, 320, 50);
  8. [
    1. iPhone API已经提供了系统写邮件界面的接口,使用MFMailComposeViewController,用来显示界面.
    2. 项目中需要添加MessageUi.framework。头文件加入MFMailComposeViewControllerDelegate。#import <MessageUI/MessageUI.h>
    3. sendMailViewController.m文件的实现:
    4. - (void)viewDidLoad
    5. {
    6. UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];
    7. button.frame = CGRectMake(0, 40, 320, 50);
    8. [button setTitle: @"Mail" forState: UIControlStateNormal];
    9. [button addTarget: self action: @selector(sendEMail) forControlEvents: UIControlEventTouchUpInside];
    10. [self.view addSubview: button];
    11. }
    12. - (void) alertWithTitle: (NSString *)_title_ msg: (NSString *)msg
    13. {
    14. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:_title_
    15. message:msg
    16. delegate:nil
    17. cancelButtonTitle:@"确定"
    18. otherButtonTitles:nil];
    19. [alert show];
    20. [alert release];
    21. }
    22. //点击按钮后,触发这个方法
    23. -(void)sendEMail
    24. {
    25. Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
    26. if (mailClass != nil)
    27. {
    28. if ([mailClass canSendMail])
    29. {
    30. [self displayComposerSheet];
    31. }
    32. else
    33. {
    34. [self launchMailAppOnDevice];
    35. }
    36. }
    37. else
    38. {
    39. [self launchMailAppOnDevice];
    40. }
    41. }
    42. //可以发送邮件的话
    43. -(void)displayComposerSheet
    44. {
    45. MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];
    46. mailPicker.mailComposeDelegate = self;
    47. //设置主题
    48. [mailPicker setSubject: @"eMail主题"];
    49. // 添加发送者
    50. NSArray *toRecipients = [NSArray arrayWithObject: @"first@example.com"];
    51. //NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];
    52. //NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com", nil];
    53. [mailPicker setToRecipients: toRecipients];
    54. //[picker setCcRecipients:ccRecipients];
    55. //[picker setBccRecipients:bccRecipients];
    56. // 添加图片
    57. UIImage *addPic = [UIImage imageNamed: @"123.jpg"];
    58. NSData *imageData = UIImagePNGRepresentation(addPic);            // png
    59. // NSData *imageData = UIImageJPEGRepresentation(addPic, 1);    // jpeg
    60. [mailPicker addAttachmentData: imageData mimeType: @"" fileName: @"123.jpg"];
    61. NSString *emailBody = @"eMail 正文";
    62. [mailPicker setMessageBody:emailBody isHTML:YES];
    63. [self presentModalViewController: mailPicker animated:YES];
    64. [mailPicker release];
    65. }
    66. -(void)launchMailAppOnDevice
    67. {
    68. NSString *recipients = @"mailto:first@example.com&subject=my email!";
    69. //@"mailto:first@example.com?cc=second@example.com,third@example.com&subject=my email!";
    70. NSString *body = @"&body=email body!";
    71. NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
    72. email = [email stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
    73. [[UIApplication sharedApplication] openURL: [NSURL URLWithString:email]];
    74. }
    75. - (void)mailComposeController:(MFMailComposeViewController *)controller
    76. didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
    77. {
    78. NSString *msg;
    79. switch (result)
    80. {
    81. case MFMailComposeResultCancelled:
    82. msg = @"邮件发送取消";
    83. break;
    84. case MFMailComposeResultSaved:
    85. msg = @"邮件保存成功";
    86. [self alertWithTitle:nil msg:msg];
    87. break;
    88. case MFMailComposeResultSent:
    89. msg = @"邮件发送成功";
    90. [self alertWithTitle:nil msg:msg];
    91. break;
    92. case MFMailComposeResultFailed:
    93. msg = @"邮件发送失败";
    94. [self alertWithTitle:nil msg:msg];
    95. break;
    96. default:
    97. break;
    98. }
    99. [self dismissModalViewControllerAnimated:YES];
    100. }

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

  9. [button addTarget: self action: @selector(sendEMail) forControlEvents: UIControlEventTouchUpInside];
  10. [self.view addSubview: button];
  11. }
  12. - (void) alertWithTitle: (NSString *)_title_ msg: (NSString *)msg
  13. {
  14. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:_title_
  15. message:msg
  16. delegate:nil
  17. cancelButtonTitle:@"确定"
  18. otherButtonTitles:nil];
  19. [alert show];
  20. [alert release];
  21. }
  22. //点击按钮后,触发这个方法
  23. -(void)sendEMail
  24. {
  25. Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
  26. if (mailClass != nil)
  27. {
  28. if ([mailClass canSendMail])
  29. {
  30. [self displayComposerSheet];
  31. }
  32. else
  33. {
  34. [self launchMailAppOnDevice];
  35. }
  36. }
  37. else
  38. {
  39. [self launchMailAppOnDevice];
  40. }
  41. }
  42. //可以发送邮件的话
  43. -(void)displayComposerSheet
  44. {
  45. MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];
  46. mailPicker.mailComposeDelegate = self;
  47. //设置主题
  48. [mailPicker setSubject: @"eMail主题"];
  49. // 添加发送者
  50. NSArray *toRecipients = [NSArray arrayWithObject: @"first@example.com"];
  51. //NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];
  52. //NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com", nil];
  53. [mailPicker setToRecipients: toRecipients];
  54. //[picker setCcRecipients:ccRecipients];
  55. //[picker setBccRecipients:bccRecipients];
  56. // 添加图片
  57. UIImage *addPic = [UIImage imageNamed: @"123.jpg"];
  58. NSData *imageData = UIImagePNGRepresentation(addPic);            // png
  59. // NSData *imageData = UIImageJPEGRepresentation(addPic, 1);    // jpeg
  60. [mailPicker addAttachmentData: imageData mimeType: @"" fileName: @"123.jpg"];
  61. NSString *emailBody = @"eMail 正文";
  62. [mailPicker setMessageBody:emailBody isHTML:YES];
  63. [self presentModalViewController: mailPicker animated:YES];
  64. [mailPicker release];
  65. }
  66. -(void)launchMailAppOnDevice
  67. {
  68. NSString *recipients = @"mailto:first@example.com&subject=my email!";
  69. //@"mailto:first@example.com?cc=second@example.com,third@example.com&subject=my email!";
  70. NSString *body = @"&body=email body!";
  71. NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
  72. email = [email stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
  73. [[UIApplication sharedApplication] openURL: [NSURL URLWithString:email]];
  74. }
  75. - (void)mailComposeController:(MFMailComposeViewController *)controller
  76. didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
  77. {
  78. NSString *msg;
  79. switch (result)
  80. {
  81. case MFMailComposeResultCancelled:
  82. msg = @"邮件发送取消";
  83. break;
  84. case MFMailComposeResultSaved:
  85. msg = @"邮件保存成功";
  86. [self alertWithTitle:nil msg:msg];
  87. break;
  88. case MFMailComposeResultSent:
  89. msg = @"邮件发送成功";
  90. [self alertWithTitle:nil msg:msg];
  91. break;
  92. case MFMailComposeResultFailed:
  93. msg = @"邮件发送失败";
  94. [self alertWithTitle:nil msg:msg];
  95. break;
  96. default:
  97. break;
  98. }
  99. [self dismissModalViewControllerAnimated:YES];
  100. }

MFMailComposeViewController发送邮件的实例的更多相关文章

  1. MFMailComposeViewController发送邮件

    1.iPhone API已经提供了系统写邮件界面的接口,使用MFMailComposeViewController,用来显示界面. 2.项目中需要添加MessageUi.framework.头文件加入 ...

  2. java发送邮件完整实例 java邮件工具类

    http://yuncode.net/code/c_552a2e2dc593894 package com.srie.mail; import java.util.Properties; import ...

  3. python发送邮件的实例代码(支持html、图片、附件)

    转自http://www.jb51.net/article/34498.htm 第一段代码 #!/usr/bin/python# -*- coding: utf-8 -*- import emaili ...

  4. php 发送邮件(实例)

    html部分 <!DOCTYPE html> <html> <head> <title></title> <script type=& ...

  5. 使用ajax发送邮件的实例

    jsp页面代码如下: <tr>   <td>    发件人地址:<s:textfield id="fromAddress" name="fr ...

  6. 发送邮件(E-mail)方法整理合集

    在IOS开发中,有时候我们会需要用到邮件发送的功能.比如,接收用户反馈和程序崩溃通知等等.其实这个功能是很常用的,因为我目前就有发送邮件的开发需求,所以顺便整理下IOS发送邮件的方法. IOS原生自带 ...

  7. iOS-----MFMessageCompose 和 MFMailComposeViewController的使用方法

    MFMessageCompose 和 MFMailComposeViewController的使用方法 使用MFMessageComposeViewCOntroller发短信 应用想自己提供界面让用户 ...

  8. C# 使用windows服务发送邮件

    最近做了一个使用 C# 写了一个发送邮件的 windows 服务,在这里记录一下. 首先使用 Visual Studio 2015 创建一个 windows 服务项目. 然后在设计器上面右击添加安装程 ...

  9. iOS开发-发送邮件(E-mail)方法整理合集(共3种)

    前言:在IOS开发中,有时候我们会需要用到邮件发送的功能.比如,接收用户反馈和程序崩溃通知等等.其实这个功能是很常用的,因为我目前就有发送邮件的开发需求,所以顺便整理下IOS发送邮件的方法. IOS原 ...

随机推荐

  1. 学习Struts--Chap03:struts.xml常用配置(基础)

    1.package属性 name:包名 用来唯一的指定一个package.package可以扩展,当一个package扩展自 另一个package时该package会在本身配置的基础上加入扩展的pac ...

  2. 无脑博士的试管们--dfs搜素

    无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试 ...

  3. Python之函数第三篇

    一.匿名函数 匿名函数是lambda定义的没有名字的具有一些小功能的函数 具体形式是 lambda x: X**2 # 求平方操作 lambda x: x>100 # 判断参数是否大于100 二 ...

  4. ASP.NET Core 发布

    ASP.NET Core 发布,asp.netcore发布 第一步:运行 dotnet restore 命令,以还原项目中指定的依赖项 dotnet restore 第二步:使用 dotnet bui ...

  5. IndexDB 操作util

    https://dexie.org/ https://www.tangshuang.net/5668.html https://github.com/tangshuang/hello-indexedd ...

  6. Guava future

    减少主函数的等待时间,使得多任务能够异步非阻塞执行 ListenableFuture是可以监听的Future,它是对java原生Future的扩展增强.Future表示一个异步计算任务,当任务完成时可 ...

  7. [Oracle] “表中有数据,但select count(*)的结果为0”问题的解决办法

    一.问题 今天遇到了一个神奇的问题--表中有数据,但select count(*)的结果为0. 这个问题最初的表现形式是"查询报表没有分页". 最开始还以为是java端的问题.后来 ...

  8. Linux 下的 sleep

    最近在阅读 libev 的源码,看到 libev 的代码里面的 sleep 实现, 我觉得可以把这个 sleep 实现单独拿出来,作为参考,以后可以直接拿来用. 代码如下(稍有修改): void ev ...

  9. weak_ptr<T>智能指针

    weak_ptr是为配合shared_ptr而引入的一种智能指针,它更像是shared_ptr的一个助手,而不是智能指针,因为它不具有普通指针的行为,没有重载operator*和operator-&g ...

  10. wps直接打开CVS文件会把长串数字订单号最后4位变为0

    WPS打开CVS文件,发现里面的长串数字订单号后4位全变成0了,而且是以科学计数法来显示了 上网查了下,不能直接打开,得先在WPS(OFFICE中也一样)中新建一个空白表格,然后用菜单里的数据导入功能 ...