Swift实现邮件发送功能

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

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 开启邮件发送功能》

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页