2015-04-08 5 views
0

Я пытаюсь подключиться к Google с помощью OAuth2. У меня есть access_token и электронная почта пользователя. Здесь не проблема.«Не удалось установить стабильное соединение с сервером»

let singleton: Singleton = Singleton.sharedInstance 
singleton.session.authType = MCOAuthType.XOAuth2 // session:IMAPSession 
singleton.session.OAuth2Token = singleton.accessToken 
singleton.session.username = singleton.email 
singleton.session.hostname = "imap.gmail.ru" 
singleton.session.port = 993 
singleton.session.connectionType = MCOConnectionType.StartTLS 

Следующий шаг я создать выборки операцию и получить ошибку

let requestKind = MCOIMAPMessagesRequestKind.Headers | MCOIMAPMessagesRequestKind.Flags | MCOIMAPMessagesRequestKind.Structure 
    let uids = MCOIndexSet(range: MCORangeMake(1, UINT64_MAX)) 
    let folder = "INBOX" 

    let fetchOperation = singleton.session.fetchMessagesOperationWithFolder(folder, requestKind: requestKind, uids: uids) 
    fetchOperation.start { (error, fetchedMessages, vanishedMessages) -> Void in 
     if (error != nil) 
     { 
      println("Error: \(error)") // this line return me error 
     } 

Error: Error Domain=MCOErrorDomain Code=1 "A stable connection to the server could not be established." UserInfo=0x7f9e260036b0 {NSLocalizedDescription=A stable connection to the server could not be established.} Error: Error Domain=MCOErrorDomain Code=1 "A stable connection to the server could not be established." UserInfo=0x7f9e23c46c00 {NSLocalizedDescription=A stable connection to the server could not be established.}

что может быть проблема?

+0

Правильное имя хоста - 'imap.gmail.com', а не' imap.gmail.ru'. –

+0

@ DinhViêtHoà, я исправил его вчера. Но я получаю новую ошибку: невозможно выполнить аутентификацию с учетными данными текущего сеанса. Я попытался изменить порт и тип соединения, но после этого я снова получаю: стабильное соединение с сервером невозможно установить. – minroff

+0

«Не удалось аутентифицировать», вероятно, является правильным сообщением об ошибке. Это означает, что вы можете подключиться к серверам Gmail. Вам просто нужно проверить свою аутентификацию OAuth2 и использовать журналы подключений на сеансе imap для отладки ваших материалов. –

ответ

0

Вот рабочий код, ребята:

var smtpSession = MCOSMTPSession() 
    smtpSession.hostname = "xxxxxxxx" 
    smtpSession.username = "xxxxxxx" 
    smtpSession.password = "xxxxxxxx" 
    smtpSession.port = 8465 
    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: "[email protected]")] 
    builder.header.from = MCOAddress(displayName: "Matt R", mailbox: "[email protected]") 
    builder.header.subject = "My message" 
    builder.htmlBody = "<h3>This is a test message!</h3>" 

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

PS: Я использовал этот код для SMTP2GO и Он работает безупречно, просто убедитесь, что вы используете правильный порт.