I'm trying to send and email with attachment using Gmail API. My progress so far:
class func generateRawString(to: NSMutableArray, subject: String, body: String) -> String {
let dateFormatter:NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z"; //RFC2822-Format
let todayString:String = dateFormatter.stringFromDate(NSDate())
let userDefaults = NSUserDefaults.standardUserDefaults()
let mailLoggedUser = userDefaults.objectForKey("email") as! String
let username = userDefaults.objectForKey("userName") as! String
let rawMessage = "" +
"Date: \(todayString)\r\n" +
"From: \(username)<\(mailLoggedUser)>\r\n" +
"To: \(self.generateRecipientsToMail(to))\r\n" +
"Subject: \(subject)\r\n\r\n" +
body
return GTLEncodeWebSafeBase64(rawMessage.dataUsingEncoding(NSUTF8StringEncoding))
}
class func sendEmail(to: NSMutableArray, isRecursive:Bool, subject: String, body: String, threadId: String, attachmentBase64: String, completionBlock:(Bool, AnyObject?)->()) {
let gtlMessage = GTLGmailMessage()
gtlMessage.raw = self.generateRawString(to, subject: subject, body: body)
let encodeDataString = attachmentBase64.dataUsingEncoding(NSUTF8StringEncoding)
let upParam = GTLUploadParameters(data: encodeDataString!, MIMEType: "message/rfc822")
if threadId.length > 0 {
gtlMessage.threadId = threadId
}
let appd = UIApplication.sharedApplication().delegate as! AppDelegate
let query = GTLQueryGmail.queryForUsersMessagesSendWithUploadParameters(upParam)
query.message = gtlMessage
appd.service.executeQuery(query, completionHandler: { (ticket, response, error) -> Void in
print("ticket ==> \(ticket)")
print("response ==>\(response)")
print("error ==> \(error)")
})
}
Ticket log
GTLServiceTicket 0x7fbb7e2cee00: {
service:<GTLServiceGmail: 0x7fbb7be1b8d0>
authorizer:GTMOAuth2Authentication 0x7fbb7becf9a0:
{
accessToken="ya29.cALoWT-_-iDvILabLWbpP-eQk4rmbSKgbKhc7E4wOBUc51zzxjE3MZ1mV_cZ1zx3EaAY3A", refreshToken="1/5HWoZDNt5bA415zp_T_VcDfR9vWfvSrEo0u3_5O01MhIgOrJDtdun6zK6XiATCKT",
code="4/qB7vLAajswouGzjmMfAJg0CKaiUZbr_-SBzOYjh0ans",
expirationDate="2016-01-20 20:18:08 +0000"
}
fetcher:GTMHTTPUploadFetcher 0x7fbb7e2aa2c0 (https://www.googleapis.com/upload/rpc?uploadType=resumable&prettyPrint=false&upload_id=AEnB2Up6Z7T3bOCZDYD9g9v6oN9dzOozKLFSLoGUL6qTjoB4izNbrJi__ULCtKce_EvEbpKJ0P_w-iSh0mJRMcxLDyhdF_8DRg)
}
Response log
GTLGmailMessage 0x7fbb7e077a30: {id:"15264d6492cedfa5" threadId:"15264d6492cedfa5" labelIds:[1]}
I can not find a way to make it work and even tried to help using: source 1 source 2