Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

จะส่งไฟล์แนบในอีเมลโดยใช้ Swift (ios) ได้อย่างไร


การรู้วิธีส่งไฟล์แนบในอีเมลมีความสำคัญมาก เนื่องจากแอปพลิเคชันส่วนใหญ่มีคุณสมบัติการแชร์ ดังนั้นการมีประสบการณ์ตรงจึงเป็นสิ่งสำคัญ

ในโพสต์นี้ เราจะมาดูวิธีการส่งไฟล์แนบในอีเมลโดยใช้ Swift

มาเริ่มกันเลย

สำหรับสิ่งนี้ เราจะใช้ MFMailComposeViewController ซึ่งเป็นตัวควบคุมการดูมาตรฐาน ซึ่งอินเทอร์เฟซให้ผู้ใช้จัดการ แก้ไข และส่งข้อความอีเมลได้

คุณสามารถอ่านเพิ่มเติมได้ที่นี่ https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontroller

นอกจากนี้ เราจะใช้ MFMailComposeViewControllerDelegate เพื่อจัดการผลลัพธ์จาก MFMailComposeResult

คุณสามารถอ่านเกี่ยวกับเรื่องนี้ได้ที่นี่ https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontrollerdelegate

เราจะสร้างแอปพลิเคชันตัวอย่างหนึ่งรายการเพื่อทำความเข้าใจ

ขั้นตอนที่ 1 − เปิด Xcode → แอปพลิเคชันมุมมองเดียว → ตั้งชื่อว่า EmailAttachment

ขั้นตอนที่ 2 - เปิด Main.storyboard และเพิ่มชื่อปุ่มหนึ่งปุ่มที่ส่งจดหมายดังที่แสดงด้านล่าง

จะส่งไฟล์แนบในอีเมลโดยใช้ Swift (ios) ได้อย่างไร

ขั้นตอนที่ 3 - สร้าง @IBAction และตั้งชื่อเป็น btnSendMail ดังนี้

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

ขั้นตอนที่ 4 - ใน ViewController.swift ให้นำเข้า MessageUI

นำเข้า MessageUI

ขั้นตอนที่ 5 - ยืนยันคลาสเป็น MFMailComposeViewControllerDelegate

คลาส ViewController:UIViewController, MFMailComposeViewControllerDelegate

ขั้นตอนที่ 6 - เพิ่มไฟล์แนบในโครงการ

จะส่งไฟล์แนบในอีเมลโดยใช้ Swift (ios) ได้อย่างไร

ขั้นตอนที่ 7 - ใน btnSendMail เขียนฟังก์ชันด้านล่าง

@IBAction func btnSendMail(_ sender:Any) { if MFMailComposeViewController.canSendMail() { let mail =MFMailComposeViewController() mail.setToRecipients(["test@gmail.com"]) 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 (เคลื่อนไหว:จริง เสร็จสิ้น:ไม่มี)} 

เสร็จแล้ว!!

เรียกใช้โปรแกรมในอุปกรณ์จริง

จะส่งไฟล์แนบในอีเมลโดยใช้ Swift (ios) ได้อย่างไร

กรอกโค้ด

นำเข้า 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 (เคลื่อนไหว:จริง เสร็จสิ้น:ไม่มี) }}