您需要一个服务来发送电子邮件,可以是自己的 WebService,也可以选择许多可用的服务之一,比如
sendgrid.com,它非常容易在您的 Swift 应用程序中实现,并且有免费的 40K 电子邮件限制。
这里是一个使用
sendgrid.com 服务的
Swift 3 示例:
注意:在使用此方法之前,请在
sendgrid.com注册获取 api_user 和 api_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.")
用法二(HTML):
sendEmail("recipient@email.com", recipientName: "", subject: "HTML Test", text: "<html><div>This is a <b>HTML</b> test email.</div></html>")