การรู้วิธีส่งไฟล์แนบในอีเมลมีความสำคัญมาก เนื่องจากแอปพลิเคชันส่วนใหญ่มีคุณสมบัติการแชร์ ดังนั้นการมีประสบการณ์ตรงจึงเป็นสิ่งสำคัญ
ในโพสต์นี้ เราจะมาดูวิธีการส่งไฟล์แนบในอีเมลโดยใช้ Swift
มาเริ่มกันเลย
สำหรับสิ่งนี้ เราจะใช้ MFMailComposeViewController ซึ่งเป็นตัวควบคุมการดูมาตรฐาน ซึ่งอินเทอร์เฟซให้ผู้ใช้จัดการ แก้ไข และส่งข้อความอีเมลได้
คุณสามารถอ่านเพิ่มเติมได้ที่นี่ https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontroller
นอกจากนี้ เราจะใช้ MFMailComposeViewControllerDelegate เพื่อจัดการผลลัพธ์จาก MFMailComposeResult
คุณสามารถอ่านเกี่ยวกับเรื่องนี้ได้ที่นี่ https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontrollerdelegate
เราจะสร้างแอปพลิเคชันตัวอย่างหนึ่งรายการเพื่อทำความเข้าใจ
ขั้นตอนที่ 1 − เปิด Xcode → แอปพลิเคชันมุมมองเดียว → ตั้งชื่อว่า EmailAttachment
ขั้นตอนที่ 2 - เปิด Main.storyboard และเพิ่มชื่อปุ่มหนึ่งปุ่มที่ส่งจดหมายดังที่แสดงด้านล่าง
ขั้นตอนที่ 3 - สร้าง @IBAction และตั้งชื่อเป็น btnSendMail ดังนี้
@IBAction func btnSendMail(_ sender:Any) { }
ขั้นตอนที่ 4 - ใน ViewController.swift ให้นำเข้า MessageUI
นำเข้า MessageUI
ขั้นตอนที่ 5 - ยืนยันคลาสเป็น MFMailComposeViewControllerDelegate
คลาส ViewController:UIViewController, MFMailComposeViewControllerDelegate
ขั้นตอนที่ 6 - เพิ่มไฟล์แนบในโครงการ
ขั้นตอนที่ 7 - ใน btnSendMail เขียนฟังก์ชันด้านล่าง
@IBAction func btnSendMail(_ sender:Any) { if MFMailComposeViewController.canSendMail() { let mail =MFMailComposeViewController() mail.setToRecipients(["[email protected]"]) mail.setSubject("GREETING") อีเมล .setMessageBody ("ยินดีต้อนรับสู่ Tutorials Point!", isHTML:จริง) mail.mailComposeDelegate =self //add ไฟล์แนบ if let filePath =Bundle.main.path (forResource:"sampleData", ofType:"json") { if let data =NSData(contentsOfFile:filePath) { mail.addAttachmentData(data as Data, mimeType:"application/json" , fileName:"sampleData.json") } } present (mail, animated:true) } else { พิมพ์ ("อีเมลไม่สามารถ ถูกส่ง") }}
เสร็จแล้ว!!
แต่เราต้องจัดการกับเงื่อนไขอื่นๆ ด้วย เช่น ข้อความที่ส่ง ยกเลิก หรือล้มเหลว สำหรับสิ่งนี้เท่านั้น เราได้ปฏิบัติตามโปรโตคอลข้างต้น
มาใช้วิธีมอบหมายกันเถอะ
func mailComposeController (_ ตัวควบคุม:MFMailComposeViewController, didFinishWith ผลลัพธ์:MFMailComposeResult ข้อผิดพลาด:ข้อผิดพลาด?) { ถ้าให้ _ =ข้อผิดพลาด { self.dismiss (เคลื่อนไหว:จริง เสร็จสิ้น:ไม่มี) } เปลี่ยนผลลัพธ์ { กรณี .cancelled:พิมพ์ ( "ยกเลิก") ตัวแบ่งกรณี .sent:พิมพ์ ("ส่งจดหมายเรียบร้อยแล้ว") ตัวแบ่งกรณี .failed:พิมพ์ ("การส่งอีเมลล้มเหลว") ตัวแบ่งค่าเริ่มต้น:ตัวแบ่ง } controller.dismiss (เคลื่อนไหว:จริง เสร็จสิ้น:ไม่มี)}ก่อน>เสร็จแล้ว!!
เรียกใช้โปรแกรมในอุปกรณ์จริง
กรอกโค้ด
นำเข้า UIKitimport MessageUIclass ViewController:UIViewController, MFMailComposeViewControllerDelegate { override func viewDidLoad() { } @IBAction func btnSendMail (_ sender:Any) { if MFMailComposeViewController.canSendMail() { ให้เมล =MFMail(ทดสอบ) mail @gmail.com"]) mail.setSubject("GREETING") mail.setMessageBody("Welcome to Tutorials Point!", isHTML:true) mail.mailComposeDelegate =self if let filePath =Bundle.main.path(forResource:"sampleData" ", ofType:"json") { if let data =NSData(contentsOfFile:filePath) { mail.addAttachmentData(data as Data, mimeType:"application/json" , fileName:"sampleData.json") } } ปัจจุบัน (เมล เคลื่อนไหว:จริง) } อื่น ๆ { พิมพ์ ("ไม่สามารถส่งอีเมลได้") } } func mailComposeController (_ ตัวควบคุม:MFMailComposeViewController, didFinishWith ผลลัพธ์:MFMailComposeResu lt ข้อผิดพลาด:ข้อผิดพลาด?) { ถ้าให้ _ =ข้อผิดพลาด { self.dismiss (เคลื่อนไหว:จริง เสร็จสิ้น:ไม่มี) } เปลี่ยนผลลัพธ์ { กรณี .cancelled:พิมพ์ ("ยกเลิก") แบ่งกรณี .sent:พิมพ์ ("ส่งจดหมาย สำเร็จ") ตัวแบ่งกรณี .failed:พิมพ์ ("การส่งอีเมลล้มเหลว") แตกค่าเริ่มต้น:แตก } controller.dismiss (เคลื่อนไหว:จริง เสร็จสิ้น:ไม่มี) }}