如何使用swift从我的应用程序发送电子邮件?

时间:2016-08-18 13:50:13

标签: ios swift email

我不想通过iPhone的邮件应用程序发送它,只需要代码,当用户甚至没有连接到手机中的邮件时。 我尝试了MFMailComposeViewController类,但它打开了邮件应用程序......

如何在不使用swift连接邮箱的情况下发送电子邮件?

3 个答案:

答案 0 :(得分:0)

您可以使用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: "john.appleseed@apple.com")
        messageBuilder.header.subject = "Subject"

        messageBuilder.header.to =  [MCOAddress(displayName: "FAQ", mailbox: "faq@apple.com")]
        messageBuilder.textBody = text
        let sendOperation = self.smtpSession.sendOperationWithData(messageBuilder.data())

        sendOperation.start { (error) in
            if let completionHandler = completionHandler {
                completionHandler(error: error)
            }
        }
    }

答案 1 :(得分:0)

您需要使用MailCore APIs直接与SMTP服务器进行交互。您可以找到详细信息和示例代码here

请注意,对于启用了多重身份验证的Gmail帐户,您需要设置应用专用密码。如果您正在运行自己的SMTP服务器来执行应用程序范围的电子邮件分发,则您可以完全控制凭据。

这将允许您在没有用户交互或使用邮件应用程序或关联帐户的情况下从预先指定的帐户发送电子邮件。

答案 2 :(得分:-1)

由于用户应了解他们负责发送的任何邮件,因此您无法独立于Mail应用程序发送电子邮件,这是有效的安全原因。这也是您不能代表用户发布到Facebook或Twitter的原因(他们必须按“发送”按钮)

答案是您无法在不使用邮箱的情况下从设备发送电子邮件。听起来您可能会使用表单将数据发送到您需要的任何地方。