2017-01-30 1 views
1

Я работаю над MFMailComposeViewController в Swift 3.0 (Xcode 8.2.1) с XLS в качестве вложения. Я сохранил файл excel в каталоге Cache и вернул его для вложения в электронное письмо. (см. ниже код)Swift MFMailComposeViewController с приложением XLS, приложение не найдено

Когда я отлаживаю код, я вижу, что он печатает «Загруженные файлы.» означает, что есть данные, поступающие из песочницы (кеш). Не уверен, этот тип мим правильно "application/vnd.ms-excel"?

К моему странному! Я не вижу почтовый ящик и приложение. Не могли бы вы помочь?

До сих пор, вот мой код:

import MessageUI 
class ViewController:MFMailComposeViewControllerDelegate { 
    func shareFileViaEmail() { 
     if MFMailComposeViewController.canSendMail() { 
       let mailComposerVC = MFMailComposeViewController() 
       mailComposerVC.mailComposeDelegate = self 


       let paths: [Any] = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true) 
       let documentsDirectory: String = paths[0] as! String 
       let dataPath: URL = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("record.xls").absoluteURL 

       if let fileData = NSData(contentsOf: dataPath) { 
        print("File data loaded.") 
        mailComposerVC.addAttachmentData(fileData as Data, mimeType: "application/vnd.ms-excel", fileName: "Report") 

       } 

       mailComposerVC.setSubject("Report") 
       mailComposerVC.setMessageBody("Message body", isHTML: false) 
       self.present(mailComposerVC, animated: true, completion: nil) 
      }else{ 

       print("Your device could not send e-mail. Please check e-mail configuration and try again.") 
      } 
    } 
    func mailComposeController(_ controller:MFMailComposeViewController, didFinishWith result:MFMailComposeResult, error:Error?) { 

     self.dismiss(animated: false, completion: nil) 
    } 

} 

Я вижу следующий вывод в устройстве: (Нет привязанности & Нет E-mail тела)

Device Screen shot

ответ

2

Ниже код работает для меня ,

if(MFMailComposeViewController.canSendMail()) { 


    let mailComposer = MFMailComposeViewController() 
    mailComposer.mailComposeDelegate = self 

    //Set the subject and message of the email 
    mailComposer.setSubject("swift") 
    mailComposer.setMessageBody("Testing", isHTML: false) 
    let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String 
    let url = NSURL(fileURLWithPath: path) 
    let filePath = url.appendingPathComponent("nameOfFileHere")?.path 
    let fileManager = FileManager.default 
    if fileManager.fileExists(atPath: filePath!) { 
     if let fileData = NSData(contentsOfFile: filePath!) { 
      print("File data loaded.") 
      mailComposer.addAttachmentData(fileData as Data, mimeType: "application/vnd.ms-excel", fileName: "nameOfFileHere") 
     } 
    } else { 
     print("FILE NOT AVAILABLE") 
    } 

    self.present(mailComposer, animated: true, completion: nil) 
} 
+0

No Change, ты проверив этот код? –

+0

Да, это работает для меня. что у вас есть расширение файла? – CST

+0

Все еще не работает. Когда я проверил свою песочницу, у него есть файл excel, он также печатает «Загруженные файлы», но я не понимаю, почему он не прикрепляет файл к электронному письму. –

Смежные вопросы