// MARK: - Action

// MARK: compose mail 发送邮件

@IBAction func composeMail(sender: AnyObject) {

// 判断能否发送邮件

guard MFMailComposeViewController.canSendMail() else {

print("不能发送邮件")

return

}

let mailVC = MFMailComposeViewController()

mailVC.mailComposeDelegate = self // 代理

mailVC.setSubject("阳君") // 主题

mailVC.setToRecipients(["937447974@qq.com"]) // 收件人

mailVC.setCcRecipients(["CcRecipients@qq.com"]) // 抄送

mailVC.setBccRecipients(["bccRecipients@qq.com"]) // 密送

mailVC.setMessageBody("相关内容", isHTML: false) // 内容,允许使用html内容

if let image = UIImage(named: "qq") {

if let data = UIImagePNGRepresentation(image) {

// 添加文件

mailVC.addAttachmentData(data, mimeType: "image/png", fileName: "qq")

}

}

self.presentViewController(mailVC, animated: true, completion: nil)

}

// MARK: compose message 发送短信

@IBAction func composeMessage(sender: AnyObject) {

guard MFMessageComposeViewController.canSendText() else {

print("不能发送短信")

return

}

let messageVC = MFMessageComposeViewController()

messageVC.messageComposeDelegate = self // 代理

messageVC.recipients = ["18511056826"] // 收件人

messageVC.body = "短信内容" // 内容

// 发送主题

if MFMessageComposeViewController.canSendSubject() {

messageVC.subject = "阳君"

}

// 发送附件

if MFMessageComposeViewController.canSendAttachments() {

// 路径添加

if let path = NSBundle.mainBundle().pathForResource("Info", ofType: "plist") {

messageVC.addAttachmentURL(NSURL(fileURLWithPath: path), withAlternateFilename: "Info.plist")

}

// NSData添加

if MFMessageComposeViewController.isSupportedAttachmentUTI("public.png") {

// See [Uniform Type Identifiers Reference](https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Introduction/Introduction.html)

if let image = UIImage(named: "qq") {

if let data = UIImagePNGRepresentation(image) {

// 添加文件

messageVC.addAttachmentData(data, typeIdentifier: "public.png", filename: "qq.png")

}

}

}

}

// messageVC.disableUserAttachments() // 禁用添加附件按钮

self.presentViewController(messageVC, animated: true, completion: nil)

}

// MARK: -  MFMailComposeViewControllerDelegate

func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {

// 关闭MFMailComposeViewController

controller.dismissViewControllerAnimated(true, completion: nil)

guard error == nil else { // 错误拦截

print(error)

return

}

switch result { // 发送状态

case MFMailComposeResultCancelled:

print("Result: Mail sending canceled") // 删除草稿

case MFMailComposeResultSaved: // 存储草稿

print("Result: Mail saved")

case MFMailComposeResultSent: // 发送成功

print("Result: Mail sent")

case MFMailComposeResultFailed: // 发送失败

print("Result: Mail sending failed")

default:// 其他

print("Result: Mail not sent")

}

}

// MARK: - MFMessageComposeViewControllerDelegate

func messageComposeViewController(controller: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) {

print(controller.attachments) // 所有附件

// 关闭MFMessageComposeViewController

controller.dismissViewControllerAnimated(true, completion: nil)

switch result { // 发送状态

case MessageComposeResultCancelled:

print("Result: Mail sending cancelled") // 取消发送

case MessageComposeResultSent: // 发送成功

print("Result: Mail sent")

case MessageComposeResultFailed: // 发送失败

print("Result: Message sending failed")

default:// 其他

print("Result: Message not sent")

}

}

Swift 发送邮件和发短信的更多相关文章

  1. 打电话,发短信,发邮件,app跳转

    1.打电话 - (IBAction)callPhone1:(id)sender { NSURL *url = [NSURL URLWithString:@"tel://18500441739 ...

  2. iOS中如何切换到发短信、打电话、发邮件

    我们在做APP的时候,难免会遇到需要调用短信,电话等程序的时候.如美团. 当然,这些都只是一些简单的方法就可以实现,但是时间久了也会淡忘,所以想写这边博客.一是为了再捡起来复习一下,另一个相当于留个备 ...

  3. 打电话、发短信、web以及发邮件

    #import "ViewController.h" #import <MessageUI/MessageUI.h> //导入信息UI库 @interface View ...

  4. IOS 开发,调用打电话,发短信,打开网址

    IOS 开发,调用打电话,发短信,打开网址   1.调用 自带mail [[UIApplication sharedApplication] openURL:[NSURL URLWithString: ...

  5. html页面通过特殊链接:打电话,发短信,发邮件详细教程

    采用url href链接的方式,实现在Safari  ios,Android 浏览器,webos浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能. 1. 拨打电话 在电话号码 ...

  6. 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程

    如果需要在移动浏览器中实现拨打电话,调用sms发短信,发送email等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url href链接的方式,实现在Safa ...

  7. IOS,发短信,发邮件,打电话

    今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点.1.1.发短信(1)——URL // ...

  8. 今天工作遇到要发短信(ios)的功能,于是随手记录了一下

    ios中发送短信有两种 1.程序外调用系统短信 2.程序内调用系统发短信 第一种比较简单,直接调用url就可以了 oc下的代码为 [[UIApplication sharedApplication] ...

  9. iOS - 打电话, 发短信

    电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicatio ...

随机推荐

  1. 【bzoj2734】集合选数(有点思维的状压dp)

    题目传送门:bzoj2734 这题一个月前看的时候没什么头绪.现在一看,其实超简单. 我们对于每个在$ [1,n] $范围内的,没有因数2和3的数$ d $,将它的倍数$ 2^a 3^b d $一起处 ...

  2. 爬虫bs4

    CSS 选择器:BeautifulSoup4 和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据. lxml 只会 ...

  3. 链表中的倒数第k个结点

    题目描述 输入一个链表,输出该链表中倒数第k个结点.   基本思想:定义两个指针a,b分别指向头节点, a指针先向前走k-1步(注意:因为倒数节点是从倒数第一个结点开始的,而不是零),然后a指针和b指 ...

  4. CountDownLatch await可能存在的问题

    执行countdown的某个子线程可能会因为某些原因无法执行countdown,这样就会导致await线程一直阻塞下去. 在线程池中多次调用await方法,因为await方法会阻塞一段时间,有可能导致 ...

  5. CodeForces - 91B单调队列

    有一个数列,对于每一个数,求比它小的在他右边距离他最远的那个数和他的距离 用单调队列做,维护单调队列时可采用如下方法,对于每一个数,如果队列中没有数,则加入队列,如果队列头的数比当前数大,则舍弃该数 ...

  6. 1-24-case流程控制和while循环语句的使用

    大纲: 1.while循环控制语句 while实战---批量添加规则用户 while实战---猜价格游戏 2.case流程控制语句和exit退出 exit实战---返回值测试 case实战---智能解 ...

  7. AOP(面向切面)的粗俗理解

    百度百科的解释:AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果. 一个比较绕的概念,简单来说就是把不影响业 ...

  8. Metasploit没有db_autopwn命令的解决办法

    将附件db_autopwn.rp 拷贝到/opt/framework3/msf3/plugins/PS:db_autopwn.rp 下载地址:http://dl.vmall.com/c04w8czlc ...

  9. OC与JS的交互详解

    事情的起因还是因为项目需求驱动.折腾了两天,由于之前没有UIWebView与JS交互的经历,并且觉得这次在功能上有一定的创造性,特此留下一点文字,方便日后回顾. 我要实现这样一个需求:按照本地的CSS ...

  10. 【问题解决记录】无法识别的标志“-sdlMode”,在“p2”中

    本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/ 这是本人第一次使用MarkDown编辑器,试试看效果-w-,下面是正文: 一.报错原因 昨 ...