2015-08-09 2 views
1

Я создал универсальное приложение Swift, которое включает в себя API MailCore2. Он отлично работает как в режиме отладки, так и в режиме выпуска. Когда я попросил друга в Калифорнии проверить его, появилось предупреждение с сообщением об ошибке. Я узнал, что причина этого в том, что я использовал Google в качестве учетной записи, на которую я отправлял сообщения.Учетная запись электронной почты для MailCore2

Вот мой код: (. Том, что я нахожусь в другом состоянии, когда я обычно войти в)

var smtpSession = MCOSMTPSession() 
smtpSession.hostname = "smtp.gmail.com" 
smtpSession.username = "[email protected]" 
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: "[email protected]")] 
builder.header.from = MCOAddress(displayName: "Matt R", mailbox: "[email protected]") 
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!") 
    } 
} 

Google предотвратил электронную почту от отправки, потому что думал, что угонщик пытается получить доступ к своей учетной записи

Мой вопрос: есть ли способ предотвратить блокирование Google этих писем от отправки? Я бы хотел, чтобы люди могли отправлять электронные письма независимо от того, где они находятся. Если это невозможно, у них есть служба электронной почты, которая не предотвращает отправку сообщений электронной почты только потому, что вы (пользователи) регистрируетесь в другом месте?

Заранее благодарим всех, кто отвечает.

+0

Можете ли вы предоставить ошибку SLOG? – sundsx

+0

Если вы используете SMTP в первый раз, я думаю, Google может показать это сообщение. Вы должны показать пользователю правильное сообщение об ошибке с инструкцией, чтобы сообщить ему о том, как разблокировать. –

+0

@iProgramIt Какое сообщение было получено у вас? – shah1988

ответ

2

это работает для меня, надеюсь, что он работает для вас тоже, попробуйте это,

let smtpSession:MCOSMTPSession = MCOSMTPSession() 
    smtpSession.hostname = "smtp.gmail.com" 
    smtpSession.port = 465 
    smtpSession.username = "[email protected]" 
    smtpSession.password = "xxxxx" 
    smtpSession.authType = MCOAuthType.SASLPlain 
    smtpSession.connectionType = MCOConnectionType.TLS 

    let builder:MCOMessageBuilder = MCOMessageBuilder() 
    let from:MCOAddress = MCOAddress(displayName: "abc", mailbox: "[email protected]") 
    let to:MCOAddress = MCOAddress(displayName: nil, mailbox: "[email protected]") 
    builder.header.from = from 
    builder.header.to = [to] 
    builder.header.subject = "My Messgae" 
    builder.htmlBody = "This is test message" 
    let rcf822Data:NSData = builder.data() 
    let sendOperation:MCOSMTPSendOperation = smtpSession.sendOperationWithData(rcf822Data) 
    sendOperation.start { (error:NSError?) in 
     if (error != nil) { 
      print("Error Sending Mail : \(error)") 
     }else{ 
      print("Mail Sent Successfully") 
     } 
    } 
+0

Что это за проблем? В чем отличие от вышеуказанной реализации? – shah1988