繁体   English   中英

从iOS应用发送电子邮件

[英]Send email from iOS app

我正在使用Swift 3构建一个非常基本的iOS应用程序。它包含一个包含以下字段的处方集:

  • 名称
  • 电子邮件
  • 电话
  • 城市(选择器视图)
  • 描述

我想用电子邮件发送这些数据。 使用字段电子邮件作为接收者,以及正文中的其余字段。

我希望发送者总是一样,我有一个Wordpress后端,我不知道我是否必须有端点来做这个(可能用PHP发送邮件,而不是直接从应用程序发送)。

我尝试使用MFMailComposeViewController,但这会打开发送电子邮件的模式,并需要在设备上配置电子邮件帐户。

知道怎么做吗?

使用Web服务将数据发送到Web服务器,然后从那里向Receiver / Recipients发送电子邮件。 Web服务器可以在不通知(移动应用程序)用户的情况下发送电子邮件。

您可以在Web服务器上设置一个帐户,该帐户可以从一个帐户发送所有电子邮件。 在您的情况下,使用Web服务从Web服务器发送电子邮件将是最佳选择。

iOS不允许在不使用MFMailComposeViewController情况下发送电子邮件。

您需要一项服务来发送您的电子邮件,这可以是您自己的WebService,或者您可以选择众多可用服务中的一种,例如sendgrid.com ,这在Swift应用程序中相当容易实现,并且免费提供40k的电子邮件限制。

这是使用sendgrid.com服务的Swift 3示例:

注意:在使用此方法之前,请在sendgrid.com上注册以获取api_userapi_key值。

func sendEmail(_ email: String, recipientName: String, subject: String, text: String) {
    let params = [
        "api_user": ENTER_YOUR_API_USER,
        "api_key": HERE_YOU_ENTER_API_KEY,
        "to": email,
        "toname": recipientName,
        "subject": subject,
        "html": text,
        "from": "noreply@example.com"
    ]
    var parts: [String] = []
    for (k, v) in params {
        let key = String(describing: k).addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
        let value = String(describing: v).addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
        parts.append(String(format: "%@=%@", key!, value!))
    }
    guard let url = URL(string: String(format: "%@?%@", "https://api.sendgrid.com/api/mail.send.json", parts.joined(separator: "&"))) else { return }

    let session = URLSession(configuration: .default, delegate: nil, delegateQueue: nil)
    let task = session.dataTask(with: url, completionHandler: {
        (data, response, error) in
        if (error == nil) {
            print("Email delivered!")
        } else {
            print("Email could not be delivered!")
        }
    })
    task.resume()
    session.finishTasksAndInvalidate()
}

用法-1(普通/文本)

sendEmail("recipient@email.com", recipientName: "Recipient Name", subject: "PlainText", text: "This is a PlainText test email.")

用法-2(html)

sendEmail("recipient@email.com", recipientName: "", subject: "HTML Test", text: "<html><div>This is a <b>HTML</b> test email.</div></html>")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM