首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Gmail api快速发送电子邮件

如何使用Gmail api快速发送电子邮件
EN

Stack Overflow用户
提问于 2015-10-21 12:55:21
回答 4查看 11.3K关注 0票数 4

Gmail Api没有明确的文档来说明如何做到这一点,我一直在尝试使用,但是有很多事情还在讨论之中。

我一直在寻找这样的外部来源。来源1来源2.第一种方法似乎使用了api的潜力,使用了函数queryForUsersMessagesSendWithUploadParameters

而第二种则更多一些。虽然在object中这不是一个问题,但GTMMIMEDocument对象除外,后者不知道在何处或是否获得它或库。

我的问题是,某人是否有更清晰和/或更容易理解的代码,或者更好的电子邮件发送指南?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-21 16:29:46

我找到了解决办法

代码语言:javascript
运行
复制
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))
    }
票数 9
EN

Stack Overflow用户

发布于 2015-10-21 13:43:00

如果您的目标是发送电子邮件,我建议使用MailCore库的iOS。在文档中,目标-c中有一些示例,但它与Swift兼容。

这是一个如何使用MailCore和Swift发送电子邮件的示例:

代码语言:javascript
运行
复制
var smtpSession = MCOSMTPSession()
smtpSession.hostname = "smtp.gmail.com"
smtpSession.username = "matt@gmail.com"
smtpSession.password = "xxxxxxxxxxxxxxxx"
smtpSession.port = 465
smtpSession.authType = MCOAuthType.SASLPlain
smtpSession.connectionType = MCOConnectionType.TLS
smtpSession.connectionLogger = {(connectionID, type, data) in
    if data != nil {
        if let string = NSString(data: data, encoding: NSUTF8StringEncoding){
            NSLog("Connectionlogger: \(string)")
        }
    }
}

var builder = MCOMessageBuilder()
builder.header.to = [MCOAddress(displayName: "Rool", mailbox: "itsrool@gmail.com")]
builder.header.from = MCOAddress(displayName: "Matt R", mailbox: "matt@gmail.com")
builder.header.subject = "My message"
builder.htmlBody = "Yo Rool, this is a test message!"

let rfc822Data = builder.data()
let sendOperation = smtpSession.sendOperationWithData(rfc822Data)
sendOperation.start { (error) -> Void in
    if (error != nil) {
        NSLog("Error sending email: \(error)")
    } else {
        NSLog("Successfully sent email!")
    }
} 
票数 2
EN

Stack Overflow用户

发布于 2020-06-01 20:28:27

下面是我最后的解决方案:

Podfile:

代码语言:javascript
运行
复制
pod 'GoogleAPIClient/Gmail'

示例Swift 5代码:

代码语言:javascript
运行
复制
import Foundation
import GoogleAPIClient

class GMailManager {

    let service = GTLServiceGmail()

    func sendEmail() {

        guard let query = GTLQueryGmail.queryForUsersMessagesSend(with: nil) else {
            return
        }

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

        query.message = gtlMessage

        self.service.executeQuery(query, completionHandler: { (ticket, response, error) -> Void in
            print("ticket \(String(describing: ticket))")
            print("response \(String(describing: response))")
            print("error \(String(describing: error))")
        })
    }

    func generateRawString() -> String {

        let dateFormatter:DateFormatter = DateFormatter()
        dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z"; //RFC2822-Format
        let todayString:String = dateFormatter.string(from: NSDate() as Date)

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

        print("message \(rawMessage)")

        return GTLEncodeWebSafeBase64(rawMessage.data(using: String.Encoding.utf8))
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33259916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档