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

SwiftUI实现发送邮件功能

上一次写过一篇《SwiftUI使用MessageUI框架发送邮件》,我一直以为在应用中只能用MessageUI来发送邮件,其实也可以使用最简单的邮件发送方式,就是从你的应用中设置好发现邮件的标题、收件人邮箱地址等信息后,直接跳转到iOS的“邮件”应用中发送邮件。

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的邮件应用当中。

macOS发送邮件

macOS和iOS有些特殊,macOS需要使用NSWorkspace实现发送邮件的功能:

func sendEmail() {
    let email = "fangjunyu.com@gmail.com"
    let subject = "ImageSlim"
    let body = "Hi fangjunyu,\n\n"
    
    // URL 编码参数
    let urlString = "mailto:\(email)?subject=\(subject)&body=\(body)"
        .addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
    
    if let url = URL(string: urlString ?? "") {
        NSWorkspace.shared.open(url)
    }
}

相关文章

1、SwiftUI使用MessageUI框架发送邮件:https://fangjunyu.com/2024/06/05/%E4%BD%BF%E7%94%A8swiftui%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6/

2、macOS应用管理类NSWorkspace:https://fangjunyu.com/2025/06/22/macos%e5%ba%94%e7%94%a8%e7%ae%a1%e7%90%86%e7%b1%bbnsworkspace/

   

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

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

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