Прикрепите PDF в письме MailJet в Swift - PullRequest
0 голосов
/ 01 марта 2019

Я генерирую данные PDF из HTML-строки на основе этого кода: https://gist.github.com/nyg/b8cd742250826cb1471f Затем я получаю pdfData и делаю это:

let base64Data = pdfData.base64EncodedString()
let email = "email@gmail.com"

        var recipients = [Any]()
        recipients.append(["Email": email])

        let body: [String: Any] = [
            "FromEmail": "<...>@gmail.com",
            "FromName": "<...>",
            "Subject": "<...>",
            "Text-part": "<...>",
            "Recipients": recipients,
            "Attachments": [
                "Content-type": "application/pdf",
                "Filename": "file.pdf",
                "content": base64Data
                ]
        ]

        let username_key =  "username_key"
        let password_key = "password_key"
        let loginString = NSString(format: "%@:%@", username_key, password_key)
        let loginData = loginString.data(using: String.Encoding.utf8.rawValue)!
        let base64LoginString = loginData.base64EncodedString()

        var request = URLRequest(url: URL(string: "https://api.mailjet.com/v3/send")!)
        request.httpMethod = "POST"
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.setValue("Basic <\(base64LoginString)>", forHTTPHeaderField: "Authorization")

        do {
            request.httpBody = try JSONSerialization.data(withJSONObject: body, options: [])
        }
        catch {
            print("Error during JSON Serialization")
            return
        }

        let session = URLSession.shared
        let task = session.dataTask(with: request, completionHandler: { (data, response, error) in

            if error == nil {
                self.dismiss(animated: true, completion: nil)
            } else {
                // Show error alert
            }
        })
        task.resume()

Код работаетЯ использую это также в других представлениях моего приложения.Проблема в том, что письмо отправлено без вложения.Вы видите, где проблема?Я также пытался непосредственно закодировать строку html в base64, а затем прикрепить ее в виде файла .html к электронному письму, но сообщение по-прежнему не содержит вложений.

...