2015-05-24 25 views
6

Tôi muốn gửi email có tệp đính kèm PDF. Tôi tạo ra tập tin PDF, sau đó tôi đã sau đó là sai Tôi tin rằng:Đính kèm tệp PDF vào email - Swift

// locate folder containing pdf file    
let documentsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as! String 

let pdfFileName = documentsPath.stringByAppendingPathComponent("chart.pdf") 
let fileData = NSData(contentsOfFile: pdfFileName) 
mc.addAttachmentData(fileData, mimeType: "pdf", fileName: chart) 

Trước khi gửi email, tôi có thể xem đính kèm chart.pdf, nhưng khi tôi đã gửi email, nó đã được gửi mà không cần tập tin đính kèm và đây là bởi vì tôi không đính kèm đúng tệp.

Trả lời

9

Bạn đang gặp lỗi mimeType đến addAttachmentData(). Sử dụng application/pdf thay vì pdf.

+0

Cảm ơn trả lời nhanh chóng của bạn, tôi thay đổi để: mc.addAttachmentData (fileData, MIMETYPE: "Ứng dụng/pdf ", tên tệp: pdfFileName), nhưng email vẫn được gửi mà không có tệp đính kèm. –

+3

Bạn có chắc chắn rằng 'tệpData' không phải là không? và pdf thực sự hiện diện trên đường dẫn đó? – NightFury

+1

bạn đã đúng, tệpData là không, sau đó tôi đã phải thay đổi "documentsPath" trong let fileData = NSData (contentsOfFile: documentsPath) thành "pdfFileName". bây giờ nó đang hoạt động rất tốt. cảm ơn bạn rất nhiều –

3

chúng ta có thể tùy viên tập tin PDF với email và gửi nó lập trình

với Swift 2,2

@IBAction func sendEmail(sender: UIButton) 
    { 
     //Check to see the device can send email. 
     if(MFMailComposeViewController.canSendMail()) 
     { 
      print("Can send email.") 

      let mailComposer = MFMailComposeViewController() 
      mailComposer.mailComposeDelegate = self 

      //Set to recipients 
      mailComposer.setToRecipients(["your email address heres"]) 

      //Set the subject 
      mailComposer.setSubject("email with document pdf") 

      //set mail body 
      mailComposer.setMessageBody("This is what they sound like.", isHTML: true) 

      if let filePath = NSBundle.mainBundle().pathForResource("All_about_tax", ofType: "pdf") 
      { 
       print("File path loaded.") 

       if let fileData = NSData(contentsOfFile: filePath) 
       { 
        print("File data loaded.") 
        mailComposer.addAttachmentData(fileData, mimeType: "application/pdf", fileName: "All_about_tax.pdf") 

       } 
      } 

      //this will compose and present mail to user 
      self.presentViewController(mailComposer, animated: true, completion: nil) 
     } 
     else 
     { 
      print("email is not supported") 
     } 
    } 

    func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) 
    { 
     self.dismissViewControllerAnimated(true, completion: nil) 
    } 
+0

Tôi gặp lỗi: Sử dụng loại không khai báo 'MFMailComposeViewController' và 'MFMailComposeResult' – coskukoz

+1

Bạn đã nhập khung MessageUI chưa? –

Các vấn đề liên quan