我不想通過iPhone的郵件應用程序發送它,但僅使用代碼,甚至當用戶甚至不連接到他的手機中的郵件。 我曾嘗試MFMailComposeViewController
類,但它打開郵件應用程序...如何使用swift從我的應用程序發送電子郵件?
如何發送電子郵件,而無需連接到郵箱與迅速?
我不想通過iPhone的郵件應用程序發送它,但僅使用代碼,甚至當用戶甚至不連接到他的手機中的郵件。 我曾嘗試MFMailComposeViewController
類,但它打開郵件應用程序...如何使用swift從我的應用程序發送電子郵件?
如何發送電子郵件,而無需連接到郵箱與迅速?
存在有效的安全原因,您爲什麼不能獨立於郵件應用程序發送電子郵件,因爲用戶應該知道他們負責發送的任何郵件。這是你無法代表用戶發佈到Facebook或Twitter的原因(他們必須按下「發送」按鈕)
答案是你不能在不使用郵箱的情況下從設備發送電子郵件。聽起來您可能會使用表單將數據發送到您需要的任何位置。
但我不在乎郵件從誰發送,如果我不會從用戶郵件發送它有可能以任何方式? – MuMtaZ
您可以在此使用MailCore-2來實現,例如:
首先,你需要配置SMTP會話
private lazy var smtpSession: MCOSMTPSession = self.configureSession()
func configureSession() -> MCOSMTPSession {
let session = MCOSMTPSession()
session.hostname = "somesmtpserver.com"
session.username = "username"
session.password = "password"
session.port = 587 //default port
session.authType = .SASLNone
session.connectionType = .StartTLS
// Use it to debug, if needed:
session.connectionLogger = {(connectionID, type, data) in
if data != nil {
if let string = NSString(data: data, encoding: NSUTF8StringEncoding){
print("Connectionlogger: \(string)")
}
}
}
return session
}
一些很酷的功能來解決它在一個簡單的方法
func sendText(text: String, withCompletionHandler completionHandler:((error: NSError?) -> Void)?) {
let messageBuilder = MCOMessageBuilder()
messageBuilder.header.from = MCOAddress(displayName: "John Appleseed", mailbox: "[email protected]")
messageBuilder.header.subject = "Subject"
messageBuilder.header.to = [MCOAddress(displayName: "FAQ", mailbox: "[email protected]")]
messageBuilder.textBody = text
let sendOperation = self.smtpSession.sendOperationWithData(messageBuilder.data())
sendOperation.start { (error) in
if let completionHandler = completionHandler {
completionHandler(error: error)
}
}
}
您將需要使用MailCore APIs直接與SMTP服務器交互。你可以找到詳細信息和示例代碼here。
請注意,對於啓用了多因素身份驗證的Gmail帳戶,您需要設置應用程序特定的密碼。如果您正在運行自己的SMTP服務器來執行應用程序範圍的電子郵件分發,則您將完全控制憑據。
這將允許您從預先指定的帳戶發送電子郵件,無需用戶交互或使用郵件應用程序或相關帳戶。
查看MailCore API。我無法在OS X中使用Swift,但它可能適用於iOS中的Swift。 – WMios