Swift实现邮件发送功能

原创 2018年04月17日 18:31:05

Swift实现邮件发送功能


使用mailComposeController可以多快好省地实现邮件发送功能

下面我们做个简单的App实验一下


先期工作:

  1. 新建一个single view app, 进入 Main.storyboard.swift
  2. 拖动一个button到屏幕中间, 命名为发送邮件,字体弄大,彰显气势

弄好之后看起来就是这样:

3.进入软件配置界面(点击文件列表最上面的那个),拖到最下面找到Linked Frameworks and Libraries这一栏,点击+添加MessageUI.framework


代码部分

import UIKit
import MessageUI
class ViewController: UIViewController,MFMailComposeViewControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    //当用户点击“发送邮件”,弹出邮件窗口
    //这里不要忘记control-drag将方法和按钮连接
    @IBAction func sentMail() {
        //0.首先判断设备是否能发送邮件
        if MFMailComposeViewController.canSendMail() {
            //1.配置邮件窗口
            let mailView = configuredMailComposeViewController()
            //2. 显示邮件窗口
            present(mailView, animated: true, completion: nil)
        } else {
            print("Whoop...设备不能发送邮件")
            showSendMailErrorAlert()
        }
    }


    //MARK:- helper methods
    //配置邮件窗口
    func configuredMailComposeViewController() -> MFMailComposeViewController {

        let mailComposeVC = MFMailComposeViewController()
        mailComposeVC.mailComposeDelegate = self

        //设置邮件地址、主题及正文
        mailComposeVC.setToRecipients(["<你的邮箱地址>"])
        mailComposeVC.setSubject("<邮件主题>")
        mailComposeVC.setMessageBody("<邮件正文>", isHTML: false)

        return mailComposeVC
    }


    //提示框,提示用户设置邮箱
    func showSendMailErrorAlert() {

        let sendMailErrorAlert = UIAlertController(title: "未开启邮件功能", message: "设备邮件功能尚未开启,请在设置中更改", preferredStyle: .alert)
        sendMailErrorAlert.addAction(UIAlertAction(title: "确定", style: .default) { _ in })
        self.present(sendMailErrorAlert, animated: true){}
    }


    //MARK:- Mail Delegate
    //用户退出邮件窗口时被调用
    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
        switch result.rawValue{
        case MFMailComposeResult.sent.rawValue:
            print("邮件已发送")
        case MFMailComposeResult.cancelled.rawValue:
            print("邮件已取消")
        case MFMailComposeResult.saved.rawValue:
            print("邮件已保存")
        case MFMailComposeResult.failed.rawValue:
            print("邮件发送失败")
        default:
            print("邮件没有发送")
            break
        }

        controller.dismiss(animated: true, completion: nil)
    }

}

备注:
模拟器不能实现发送邮件功能,必须真机调试,而且要开启手机的邮件功能之后才能正常发送邮件。
关于iPhone邮件功能开启,可以看: 《iPhone 开启邮件发送功能》

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Brad_Wu/article/details/79977119

Swift - 实现发送邮件功能

原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_792.html 使用MessageUI.framewo...
  • u014063717
  • u014063717
  • 2016-03-16 14:13:31
  • 479

PHP Swift库(邮件发送)

  • 2016年03月17日 12:36
  • 211KB
  • 下载

实现简单的邮件发送功能

1 创建路由Route::get('/',function()){ //查找Id为1的用户 $user=\App\User::find(1); //to方法后面接的是邮件地址;s...
  • gengfu_php
  • gengfu_php
  • 2017-05-24 20:19:26
  • 592

基于SMTP协议的邮件发送功能JavaEE实现

本博客介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实也是Foxmail邮箱先要了解一下SMTP协议和SSL加密...
  • u014427391
  • u014427391
  • 2016-12-26 17:22:28
  • 4148

JavaWeb中使用JavaMail实现发送邮件功能实例详解

现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件。邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息。今天我们也来实现一个这样的功能...
  • H12KJGJ
  • H12KJGJ
  • 2017-07-09 13:28:20
  • 516

在web中实现邮件发送功能

在web站点中也可以集成邮件客户端软件的功能,以便web站点的注册用户可以通过web页面来收发电子邮件,例如,sina和sohu等大型门户网站都会为会员提供了通过web页面来收发电子邮件的功能。对于一...
  • jiangtao7913
  • jiangtao7913
  • 2016-02-01 00:54:23
  • 5315

用javamail实现邮件发送-完整源码

  • 2015年04月15日 18:01
  • 210KB
  • 下载

java实现邮件发送功能

  • 2018年01月18日 15:08
  • 482KB
  • 下载

PHP发送邮件功能实现

PHP的用163邮箱发送邮件功能实现
  • s371795639
  • s371795639
  • 2016-11-25 14:08:25
  • 3957

在Web应用中增加邮件发送功能

一、Web应用发送邮件原理和界面 1.1、Web应用发送邮件后台原理 上图中,蓝色圆代表一个后台线程或者是单独的邮件发送模块。启动单独的一个邮件发送模块或者创建一个后台线程负责发送...
  • BruceLeeNumberOne
  • BruceLeeNumberOne
  • 2017-06-28 10:36:54
  • 282
收藏助手
不良信息举报
您举报文章:Swift实现邮件发送功能
举报原因:
原因补充:

(最多只允许输入30个字)