发布于 2015-10-21 16:29:46
我找到了解决办法
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))
}发布于 2015-10-21 13:43:00
如果您的目标是发送电子邮件,我建议使用MailCore库的iOS。在文档中,目标-c中有一些示例,但它与Swift兼容。
这是一个如何使用MailCore和Swift发送电子邮件的示例:
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!")
}
} 发布于 2020-06-01 20:28:27
下面是我最后的解决方案:
Podfile:
pod 'GoogleAPIClient/Gmail'示例Swift 5代码:
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))
}
}https://stackoverflow.com/questions/33259916
复制相似问题