iOS12系统应用发送普通邮实现发送
iOS12系统应用发送普通邮实现发送
构建好邮件以后,可以发送该邮件。此时需要使用mailComposeDelegate属性,该属性用来设置委托,其语法形式如下:
unowned(unsafe) var mailComposeDelegate: MFMailComposeViewControllerDelegate? { get set }
该属性的值为MFMailComposeViewControllerDelegate协议类型。该协议中包含mailComposeController(_:didFinishWith:error:)方法。该方法会在用户关闭MFMailComposeViewController界面时调用,其语法形式如下:
optional func mailComposeController(_ controller: MFMailComposeViewController,
didFinishWith result: MFMailComposeResult,
error: Error?)
其中,参数说明如下:
- controller:MFMailComposeViewController对象。
- result:用户操作的结果。该参数是MFMailComposeResult枚举类型,该枚举类型中包含了4个成员。其中,cancelled表示轻拍取消中的“删除草稿”按钮;saved表示轻拍取消中的“保存草稿”按钮,邮件会保存在用户的“草稿”文件夹中,而不会发送;sent表示轻拍“发送”按钮,邮件添加到用户的发件箱,准备发送;failed表示邮件未保存或排队,可能是出现错误。
- error:Error对象。如果发生错误,此参数包含一个错误对象,其中包含失败类型的信息,如错误域和错误编码。开发者可以使用MFMailComposeErrorDomain全局变量获取错误域,其语法形式如下:
let MFMailComposeErrorDomain: String
而错误编码是MFMailComposeError.Code枚举类型。该枚举包含了2个成员。其中,saveFailed表示尝试将邮件保存到“草稿”文件夹时发生错误;sendFailed表示尝试排队或发送电子邮件时发生错误。
【示例3-1】下面发送一封普通邮件,内容为纯文本形式。代码如下:
@IBAction func sendMail(_ sender: Any) {
let composeVC = MFMailComposeViewController() //实例化
composeVC.mailComposeDelegate = self
composeVC.setToRecipients(["address@example.com"]) //设置收件人
composeVC.setSubject("Hello!") //设置主题
composeVC.setMessageBody("Hello from California!", isHTML: false) //设置邮件正文
self.present(composeVC, animated: true, completion: nil)
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
//轻拍取消中的“删除草稿”按钮
if(result==MFMailComposeResult.cancelled){
print("邮件取消")
}
//轻拍取消中的“保存草稿”按钮
if(result==MFMailComposeResult.saved){
print("邮件保存在草稿文件夹中")
}
//邮件失败
if(result==MFMailComposeResult.failed){
print("邮件失败")
}
//轻拍“发送”按钮
if(result==MFMailComposeResult.sent){
print("邮件已在用户的发件箱中排队,准备发送")
}
self.dismiss(animated: true, completion: nil)
}
运行程序,轻拍按钮,会打开MFMailComposeViewController提供的标准邮件界面,如图3.1所示。当轻拍“取消”按钮的“删除草稿”按钮后,会输出以下的内容:
邮件取消
当轻拍“取消”按钮的“保存草稿”按钮后,会输出以下的内容:
邮件保存在草稿文件夹中
当轻拍“发送”按钮后,会输出以下的内容:
邮件已在用户的发件箱中排队,准备发送
邮件发生错误,会输出以下的内容:
邮件失败
iOS12系统应用发送普通邮实现发送的更多相关文章
- iOS12系统应用发送普通邮件构建邮件
iOS12系统应用发送普通邮件构建邮件 当确定设备支持邮件发送功能后,开发者就可以实现该功能.根据是否包含附件,邮件可以分为普通邮件和附件邮件两种.本节首先讲解如何发送普通邮件.实现过程如下: 1.构 ...
- 用系统默认mail服务实现邮件发送
用系统默认mail服务实现邮件发送 1.操作步骤 第一步:设备服务器发送邮件要用的,邮箱地址,账号密码 编辑/etc/mail.rc vim /etc/mail.rc 在文件的结尾追加,账号信息配置 ...
- iOS12系统应用发送邮件中的附件
iOS12系统应用发送邮件中的附件 iOS12系统应用发送邮件中的附件,如果发送邮件的内容很多,或者包含文档.图片等,可以以附件的形式进行发送.此时需要使用addAttachmentData(_:mi ...
- iOS12系统应用开发发送邮件
iOS12系统应用开发发送邮件 消息分享是应用社交化和营销的重要途径.除了开发者自己搭建专有的消息分享渠道之外,还可以借助系统自带的各种途径.iOS提供了3种快速分享消息的方式,分别为发送邮件.发送短 ...
- TCP调试助手,十六进制发送或者字符串形式发送的理解
"无论创作还是欣赏,都是对法则和规律的逃逸,自由是艺术的源泉"-- 黑格尔 TCP调试助手中,在发送时可以选择十六进制发送或者字符串形式发送! 其实,两者最终调用的都是系统的soc ...
- SpringBoot系列(十四)集成邮件发送服务及邮件发送的几种方式
往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静 ...
- android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信
android发送短信截获上一条发送是否成功,然后再来发送下一条短信 1.问题:在项目中遇到例如以下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条. for(int ...
- linux c 使用socket 发送http请求 可以发送json格式数据
#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <time.h ...
- yii2验证密码->手机号码短信发送>手机短信发送频繁问题
<?php namespace frontend\models; use Yii; use yii\base\Model; class ChangeMobileSendRequestForm e ...
随机推荐
- BZOJ3456城市规划
题目描述 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了.刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得整个国家的任意两个城市都直接或间接的连通.为了 ...
- 去掉 Chrome(V66) 新标签页的8个缩略图
1.Chrome程序资源文件路径: C:\Program Files (x86)\Google\Chrome\Application\66.0.3359.181\resources.pak 2.下载C ...
- 20175221 2018-2019-2 《Java程序设计》第一周学习总结
20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...
- Unity 阴影的制作方式
Unity阴影制作的三种方式. 方式一:Light中Shadow Type的类型 包括Hard Shadows.Soft Shadows.No Shadows: Mesh Renderer中的属性 ...
- Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)
一.前言 1.公共轮播图的实现 2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...
- linux系统无法启动或无法登入
修改root权限: https://blog.csdn.net/houjue2298/article/details/78539827 修改密码: https://www.cnblogs.com/we ...
- freemarker和thymeleaf的使用样例
最近需要对公司项目首页使用Java模板重做,以提高首屏加载速度和优化SEO. 在选择模板时发现freemarker和thymeleaf最为常用. 两者最大的区别在于语法,对性能方面未作测试,具体性能测 ...
- IScroll某些手机下不触发ScrollEnd问题处理
同样是微信7.0,看起来内核都是x5内核,两款不同的手机,一个有问题,一个没有问题. IScroll在问题手机下会出现快速拨动时候不触发ScrollEnd事件现象,轻点一次才会触发,解决办法 docu ...
- /etc/profile文件被改坏导致命令不可用
这几天在装一个软件,设置环境变量的时候,不小心把/etc/profile文件改坏了(就是没配置对),在source /etc/profile后导致所有命令都不可用了.出现如下报错: -bash: xx ...
- fstat函数
一.函数原型 #include<sys/stat.h> #include<unistd.h> int fstat(int fildes,struct stat *buf); 返 ...