【问题标题】:How to insert a mail using the latest GMail API in Swift?如何在 Swift 中使用最新的 GMail API 插入邮件?
【发布时间】:2015-10-22 00:54:08
【问题描述】:

所以目前我有以下sn-p:

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))
}

这可行,但是在documentation 中,他们写了关于使用帖子正文发送消息资源的内容。看起来像这样:

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

但是,如果我将 rawData 替换为该消息数据,它就不起作用。

那么我怎样才能插入一条消息并给它一些标签呢?

【问题讨论】:

    标签: swift email google-api


    【解决方案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))
            }
    

    【讨论】:

    • 你会如何给它一个标签?
    • @马克。试试这个query.message.labelIds = ["INBOX"]gtlMessage.labelIds = ["INBOX"]
    猜你喜欢
    • 2014-12-16
    • 2019-02-24
    • 2016-01-20
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2016-07-26
    • 2016-02-01
    • 1970-01-01
    相关资源
    最近更新 更多