Computer >> Máy Tính >  >> Lập trình >> IOS

Làm cách nào để gửi tệp đính kèm trong email bằng Swift (ios)?

Biết cách gửi tệp đính kèm trong email là rất quan trọng vì hầu hết các ứng dụng đều có tính năng chia sẻ. Do đó, có kinh nghiệm thực tế là rất quan trọng.

Trong bài đăng này, chúng ta sẽ xem cách gửi tệp đính kèm trong thư bằng Swift.

Vì vậy, hãy bắt đầu.

Đối với điều này, chúng tôi sẽ sử dụng MFMailComposeViewController, là một bộ điều khiển chế độ xem tiêu chuẩn, có giao diện cho phép người dùng quản lý, chỉnh sửa và gửi email.

Bạn có thể đọc thêm về nó tại đây https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontroller

Chúng tôi cũng sẽ sử dụng MFMailComposeViewControllerDelegate để xử lý kết quả từ MFMailComposeResult.

Bạn có thể đọc về nó tại đây https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontrollerdelegate

Chúng tôi sẽ tạo một ứng dụng mẫu để hiểu,

Bước 1 - Mở Xcode → Ứng dụng xem một lần → Đặt tên cho nó là EmailAttachment

Bước 2 - Mở Main.storyboard và thêm một tên nút mà nó sẽ gửi thư như hình dưới đây,

Làm cách nào để gửi tệp đính kèm trong email bằng Swift (ios)?

Bước 3 - Tạo @IBAction và đặt tên là btnSendMail như bên dưới

 @IBAction func btnSendMail (_ sender:Any) {} 

Bước 4 - Trong ViewController.swift, Nhập MessageUI

 nhập MessageUI 

Bước 5 - Xác nhận lớp thành MFMailComposeViewControllerDelegate

 class ViewController:UIViewController, MFMailComposeViewControllerDelegate 

Bước 6 - Thêm tệp đính kèm vào dự án,

Làm cách nào để gửi tệp đính kèm trong email bằng Swift (ios)?

Bước 7 - Trong btnSendMail viết hàm bên dưới,

 @IBAction func btnSendMail (_ sender:Any) {if MFMailComposeViewController.canSendMail () {let mail =MFMailComposeViewController () mail.setToRecipient (["test@gmail.com"]) mail.setSubject ("GREETING") thư .setMessageBody ("Chào mừng bạn đến với Điểm Hướng dẫn!", isHTML:true) mail.mailComposeDelegate =self // thêm tệp đính kèm if let filePath =Bundle.main.path (forResource:"sampleData", ofType:"json") {if let data =NSData (contentOfFile:filePath) {mail.addAttachmentData (data as Data, mimeType:"application / json", fileName:"sampleData.json")}} present (mail, animation:true)} else {print ("Email không được được gửi ")}} 

Và bạn đã hoàn tất !!

Nhưng chúng ta cũng cần phải xử lý các điều kiện khác, chẳng hạn như tin nhắn được gửi, bị hủy hoặc không thành công. Đối với điều này, chúng tôi chỉ tuân theo giao thức trên,

Hãy triển khai các phương pháp ủy quyền,

 func mailComposeController (_ controller:MFMailComposeViewController, didFinishVới kết quả:MFMailComposeResult, error:Error?) {if let _ =error {self.dismiss (animation:true, complete:nil)} kết quả chuyển đổi {case .cancelt:print ( "Canceled") break case .sent:print ("Mail đã gửi thành công") break case .failed:print ("Gửi thư không thành công") break default:break} controller.dismiss (animation:true, complete:nil)}  

Và bạn đã hoàn tất !!

Chạy chương trình trong một thiết bị thực,

Làm cách nào để gửi tệp đính kèm trong email bằng Swift (ios)?

Hoàn thành mã

 import UIKitimport MessageUIclass ViewController:UIViewController, MFMailComposeViewControllerDelegate {override func viewDidLoad () {} @IBAction func btnSendMail (_ sender:Any) {if MFMailComposeViewController @ gmail.com "]) mail.setSubject (" GREETING ") mail.setMessageBody (" Chào mừng bạn đến với Điểm hướng dẫn! ", isHTML:true) mail.mailComposeDelegate =self if let filePath =Bundle.main.path (forResource:" sampleData ", ofType:" json ") {if let data =NSData (contentOfFile:filePath) {mail.addAttachmentData (data as Data, mimeType:" application / json ", fileName:" sampleData.json ")}} hiện tại (mail, animation:true)} else {print ("Không thể gửi email")}} func mailComposeController (_ controller:MFMailComposeViewController, didFinishVới kết quả:MFMailComposeResu lt, error:Error?) {if let _ =error {self.dismiss (animation:true, finish:nil)} switch result {case .cancelling:print ("Canceled") break case .sent:print ("Đã gửi thư thành công ") trường hợp ngắt.