代码之家  ›  专栏  ›  技术社区  ›  ddpishere

swift pdf文件未附加到电子邮件

  •  2
  • ddpishere  · 技术社区  · 9 年前

    我有下面的代码,假设它附加了一个名为“file.pdf”的文件,该文件是这样创建并放在临时目录中的

    pdfFileUrl = "\(NSTemporaryDirectory())file.pdf" 
    

    但这封电子邮件没有我的附件,因为我期待它

    @IBAction func sendEmail(sender: AnyObject) {
    
        createReportPDF()
    
        if MFMailComposeViewController.canSendMail() {
            let mail = MFMailComposeViewController()
            mail.mailComposeDelegate = self
            mail.setToRecipients(["dpreston10@gmail.com"])
            mail.setMessageBody("<p>You're so awesome!</p>", isHTML: true)
            if let filePath = NSBundle.mainBundle().pathForResource(pdfFileUrl, ofType: "pdf") {
                print("File path loaded.")
    
                if let fileData = NSData(contentsOfFile: filePath) {
                    print("File data loaded.")
                    mail.addAttachmentData(fileData, mimeType: "application/pdf", fileName: "file.pdf")
                }
            }
    
            presentViewController(mail, animated: true, completion: nil)
        } else {
            // show failure alert
        }
    }
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   Christian Di Lorenzo    9 年前

    因为您的文件被放在用户的临时文件夹中,所以我认为无法从 NSBundle 方法也就是说,如果你正在写 NSData 到临时文件夹中的磁盘,然后直接通过电子邮件发送,您可以考虑只传递该变量( pdfData )发送给邮件控制器,如:

    mail.addAttachmentData(pdfData, mimeType: "application/pdf", fileName: "file.pdf")