Swift实现发送邮件功能
Swift实现发送邮件功能

Swift实现发送邮件功能

上一次写过一篇《使用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的邮件应用当中。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注