我不想通过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