iosswiftemailgmail-api

How send Email using Gmail API in swift


The Gmail Api has no clear documentation on how to do this, I have been trying with this but there are many things that are in the air.

I have sought external sources such. Source 1 and Source 2. The first seems to use the potential of the API, using the function queryForUsersMessagesSendWithUploadParameters.

While the second is about a little more. Although this in Objective-C is not a problem, except for the GTMMIMEDocument object, which do not know where or if it is obtained or a library.

My question is if someone has a somewhat cleaner and / or code easier to understand, or a better guide in which to send an email


Solution

  • I found the solution

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