How to insert a mail using the latest GMail API in Swift?

百般思念 提交于 2019-12-25 04:42:46

问题


So currently I have the following snippet:

var url = NSURL(string: "https://www.googleapis.com/upload/gmail/v1/users/me/messages?uploadType=media&internalDateSource=dateHeader")


var rawMessage = "" +
    "Date: Thu, 25 Sep 2014 18:35:28 -0700\r\n" +
    "From: John Appleseed <john@appleseed.com>\r\n" +
    "To: Steve Jobs <steve@jobs.com>\r\n" +
    "Subject: One more thing\r\n\r\n" +
    "Some Message"

var rawData = rawMessage.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)

var request = NSMutableURLRequest()
request.URL = url
request.HTTPMethod = "POST"

request.setValue("Bearer \(self.accessToken!)", forHTTPHeaderField: "Authorization")
request.setValue("message/rfc822", forHTTPHeaderField: "Content-Type")
request.setValue("\(rawData?.length)", forHTTPHeaderField: "Content-Length")
request.HTTPBody = rawData!

if let response = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil) {
    println(NSString(data: response, encoding: NSUTF8StringEncoding))
}

This works, however in the documentation they write about sending a message resource with the post body. Which would look something like this:

{"raw":base64encoded(data),"labelIds":["Label_1", "Label_2"]}

However if I would replace the rawData with that message data, it does not work.

So how can I insert a message and give it some labels?


回答1:


        func sendEmail() {

            var gtlMessage = GTLGmailMessage()
            gtlMessage.raw = self.generateRawString()

            let appd = UIApplication.sharedApplication().delegate as! AppDelegate
            let query = GTLQueryGmail.queryForUsersMessagesSendWithUploadParameters(nil)
            query.message = gtlMessage

            appd.service.executeQuery(query, completionHandler: { (ticket, response, error) -> Void in
                println("ticket \(ticket)")
                println("response \(response)")
                println("error \(error)")
            })
        }

       func generateRawString() -> String {

            var dateFormatter:NSDateFormatter = NSDateFormatter()
            dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z"; //RFC2822-Format
            var todayString:String = dateFormatter.stringFromDate(NSDate())

            var rawMessage = "" +
                "Date: \(todayString)\r\n" +
                "From: <mail>\r\n" +
                "To: username <mail>\r\n" +
                "Subject: Test send email\r\n\r\n" +
                "Test body"

            println("message \(rawMessage)")

            return GTLEncodeWebSafeBase64(rawMessage.dataUsingEncoding(NSUTF8StringEncoding))
        }


来源:https://stackoverflow.com/questions/30824036/how-to-insert-a-mail-using-the-latest-gmail-api-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!