iOS12系統應用發送普通郵實現發送

iOS12系統應用發送普通郵實現發送編碼

構建好郵件之後,能夠發送該郵件。此時須要使用mailComposeDelegate屬性,該屬性用來設置委託,其語法形式以下:spa

unowned(unsafe) var mailComposeDelegate: MFMailComposeViewControllerDelegate? { get set }

該屬性的值爲MFMailComposeViewControllerDelegate協議類型。該協議中包含mailComposeController(_:didFinishWith:error:)方法。該方法會在用戶關閉MFMailComposeViewController界面時調用,其語法形式以下:code

optional func mailComposeController(_ controller: MFMailComposeViewController,

                      didFinishWith result: MFMailComposeResult,

                              error: Error?)

其中,參數說明以下:對象

controller:MFMailComposeViewController對象。ip

result用戶操做的結果。該參數是MFMailComposeResult枚舉類型,該枚舉類型中包含了4個成員。其中,cancelled表示輕拍取消中的「刪除草稿」按鈕;saved表示輕拍取消中的「保存草稿」按鈕,郵件會保存在用戶的「草稿」文件夾中,而不會發送;sent表示輕拍「發送」按鈕,郵件添加到用戶的發件箱,準備發送;failed表示郵件未保存或排隊,多是出現錯誤。ci

error:Error對象。若是發生錯誤,此參數包含一個錯誤對象,其中包含失敗類型的信息,如錯誤域和錯誤編碼。開發者能夠使用MFMailComposeErrorDomain全局變量獲取錯誤域,其語法形式以下:開發

let MFMailComposeErrorDomain: String

而錯誤編碼是MFMailComposeError.Code枚舉類型。該枚舉包含了2個成員。其中,saveFailed表示嘗試將郵件保存到「草稿」文件夾時發生錯誤;sendFailed表示嘗試排隊或發送電子郵件時發生錯誤。get

【示例3-1】下面發送一封普通郵件,內容爲純文本形式。代碼以下:it

@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所示。當輕拍「取消」按鈕的「刪除草稿」按鈕後,會輸出如下的內容:io

郵件取消

當輕拍「取消」按鈕的「保存草稿」按鈕後,會輸出如下的內容:

郵件保存在草稿文件夾中

當輕拍「發送」按鈕後,會輸出如下的內容:

郵件已在用戶的發件箱中排隊,準備發送

郵件發生錯誤,會輸出如下的內容:

郵件失敗

相關文章
相關標籤/搜索