Attach a PDF file to email - Swift

后端 未结 3 1725
终归单人心
终归单人心 2020-12-08 23:34

I want to send email with a PDF attachment. I created PDF file, then I did the following which is wrong I believe:

// locate folder containing pdf file               


        
相关标签:
3条回答
  • 2020-12-08 23:55

    we can attache PDF file with email and send it programmatically

    with 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 讨论(0)
  • 2020-12-08 23:58

    You are passing wrong mimeType to addAttachmentData(). Use application/pdf instead of pdf.

    0 讨论(0)
  • 2020-12-09 00:13

    First one, import:

    import MessageUI
    

    And implement de Email Delegate, like

    public class MyViewController : UIViewController, MFMailComposeViewControllerDelegate { ...
    

    If you have the file or the Data type, you can use this function:

    let filePath = NSBundle.mainBundle().pathForResource("chart", ofType: "pdf")
    let fileData = NSData(contentsOfFile: filePath)
    sendEmail(data:fileData)
    

    Swift 4

    func sendEmail(data:Data?){
        if( MFMailComposeViewController.canSendMail() ) {
            let mailComposer = MFMailComposeViewController()
            mailComposer.mailComposeDelegate = self
    
            mailComposer.setToRecipients(["john@stackoverflow.com", "mrmins@mydomain.com", "anotheremail@email.com"])
            mailComposer.setSubject("Cotización")
            mailComposer.setMessageBody("My body message", isHTML: true)
    
            if let fileData = data {
                mailComposer.addAttachmentData(fileData, mimeType: "application/pdf", fileName: "MyFileName.pdf")
           }
    
    
           self.present(mailComposer, animated: true, completion: nil)
                return
        }
        print("Email is not configured")
    
    }
    

    And the compose:

    public func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?){
            self.dismiss(animated: true, completion: nil)
            print("sent!")
        }
    
    0 讨论(0)
提交回复
热议问题