上一次写过一篇《使用SwiftUI发送》,我一直以为在应用中只能用MessageUI来发送邮件,其实也可以使用最简单的邮件发送方式,就是从你的应用中设置好发现邮件的标题、收件人邮箱地址等信息后,直接跳转到iOS的“邮件”应用中发送邮件。
import SwiftUI
struct ContentView: View {
var body: some View {
Button("Send Feedback") {
sendEmail()
}
}
func sendEmail() {
let email = "fangjunyu.com@gmail.com"
let subject = "Feedback"
let body = "Hi fangjunyu,\n\n"
// URL 编码参数
let urlString = "mailto:\(email)?subject=\(subject)&body=\(body)"
.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
if let url = URL(string: urlString ?? "") {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url)
} else {
// 处理无法打开邮件应用的情况
print("Cannot open Mail app.")
}
}
}
}
我们可以在我们的应用当中配置一个sendEmail函数,然后设置Button激活该函数后,iOS会将通过UIApplication.shared.open打开邮件应用。
当然,还有一点特殊性,比如当你的用户手机没有“邮件”应用时,可能就无法通过这个方式发送邮件。比如模拟器中没有“邮件”应用,那么你就需要考虑《使用SwiftUI发送》这种方式,在应用当中调取邮件功能发生邮件,而不是跳转到iOS的邮件应用当中。