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

大學霸發表於2018-11-16

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

郵件取消

當輕拍“取消”按鈕的“儲存草稿”按鈕後,會輸出以下的內容:

郵件儲存在草稿資料夾中

當輕拍“傳送”按鈕後,會輸出以下的內容:

郵件已在使用者的發件箱中排隊,準備傳送

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

郵件失敗


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2220347/,如需轉載,請註明出處,否則將追究法律責任。

相關文章