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,
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,
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 (["[email protected]"]) 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,
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.