2015-05-24 16 views
6

Voglio inviare e-mail con un allegato PDF. Ho creato file PDF, poi ho fatto la seguente che è sbagliato credo:Allegare un file PDF per e-mail - 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) 

Prima di inviare l'e-mail, posso vedere allegato chart.pdf, ma quando ho inviato l'e-mail, è stato inviato senza attaccamento e questo è perché non ho allegato correttamente il file.

risposta

9

Si sta passando un errore mimeType a addAttachmentData(). Utilizzare application/pdf anziché pdf.

+0

Grazie per la risposta rapida, cambio a: mc.addAttachmentData (fileData, mimeType: "applicazione/pdf ", fileName: pdfFileName), ma l'e-mail viene comunque inviata senza allegato. –

+3

Sei sicuro che 'fileData' non è nullo? e il pdf è effettivamente presente su quel percorso? – NightFury

+1

hai ragione, fileData era nullo, quindi ho dovuto modificare "documentsPath" in let fileData = NSData (contentsOfFile: documentsPath) in "pdfFileName". ora sta funzionando molto bene. grazie mille –

3

possiamo attache file PDF con la posta elettronica e inviarlo a livello di codice

con 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

Ho un errore: uso del tipo non dichiarato 'MFMailComposeViewController' e' MFMailComposeResult' – coskukoz

+1

Hai importato il framework MessageUI? –

Problemi correlati