在Swift中附加PDF到电子邮件,但PDF未解码

时间:2017-03-09 02:29:23

标签: swift pdf

我已成功将PDF文档附加到电子邮件中,如下所示。

  @IBAction func emailScript(_ sender: Any) {

    print ("Now the value of pdfPath is \(SelectedPDF)")
    let pdfURL = URL(string:SelectedPDF)

    print ("The value of pdfURL is \(pdfURL)")

    if MFMailComposeViewController.canSendMail() {
        let mail = MFMailComposeViewController()
        mail.setMessageBody("<p>You're so awesome!</p>", isHTML: true)
        mail.setToRecipients(["Enter one or more emails here"])

        mail.mailComposeDelegate = self  //  Make sure to set this property to self, so that the controller can be dismissed!

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


            if let fileData = NSData(contentsOf: pdfURL!) {
                print ("File data loaded.")
                print (fileData)
                mail.addAttachmentData(fileData as Data, mimeType: "application/pdf", fileName: "GST")
            }

            present(mail, animated: true, completion: nil)

        }

    else {

        print ("Error")
    }

}

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    controller.dismiss(animated: true)
}

我确信fileData不是nil。数据流显示在控制台中。附件显示为PDF。但是当我从我的应用程序发送电子邮件时,PDF无法读取。在我的iPad中,我得到一个带标题栏的灰色屏幕。在我的Mac上,我收到错误消息,说明PDF没有被解码。

PDF来自我的Dropbox,其URL来自Parse服务器应用程序。

在浏览器中使用的pdf链接是https://www.dropbox.com/s/rt28egrkyc7uhc7/GSTPurim5777.pdf?dl=0

我做错了什么?

谢谢,

1 个答案:

答案 0 :(得分:0)

好的,我明白了。 Dropbox网址(至少对于PDF而非所有内容)都包含dl = 0标记以指示下载权限。要通过应用程序发送PDF,您必须将dl = 0更改为dl = 1。然后一切正常。

因此上面的代码没有变化。更改是在我的Parse浏览器中,我列出了我的文件。