如何在Swift中启动iOS邮件应用程序?

时间:2015-04-02 21:38:30

标签: ios swift uiapplication

我正在创建一个带有密码重置功能的iOS应用程序,该功能会向用户发送电子邮件。发送电子邮件后,我想向用户显示UIAlertController,询问他们是否要打开邮件应用程序。

我在这里看到了各种各样的帖子:

let url = NSURL(string: "mailto:")
UIApplication.sharedApplication().openURL(url!)

这样可行,但不幸的是它会启动一条不是我想要的新消息。我只想启动应用程序,以便用户可以看到他们的收件箱。

5 个答案:

答案 0 :(得分:23)

没有自己测试,但也许这个答案可以帮助你:

  

显然,Mail支持第二个网址方案message://,我认为它允许您在应用程序提取特定消息时打开它。如果您没有提供完整的邮件网址,则只会打开邮件:

let mailURL = NSURL(string: "message://")!
if UIApplication.sharedApplication().canOpenURL(mailURL) {
    UIApplication.sharedApplication().openURL(mailURL)
}

取自:Launch Apple Mail App from within my own App?

答案 1 :(得分:1)

只需打开Mail应用的 Swift 3.0.1 方式如下:

private func openMailClient() {
    let mailURL = URL(string: "message://")!
    if UIApplication.shared.canOpenURL(mailURL) {
        UIApplication.shared.openURL(mailURL)
    }
}

As" dehlen"正确说明,如果没有提供进一步的信息,使用message://方案只会打开邮件应用程序。

答案 2 :(得分:1)

显然几年后...我不得不为Xcode 10.2.1 swift 5添加完成处理程序。

这很完美-

    let emailURL = NSURL(string: "message://")!

    if UIApplication.shared.canOpenURL(emailURL as URL)
    {
        UIApplication.shared.open(emailURL as URL, options: [:],completionHandler: nil)
    }

答案 3 :(得分:0)

由于UIApplication.shared.openURL()方法已被弃用,我们可以直接使用URL()代替NSURL(),因此此问题的答案的更新版本为:

let mailURL = URL(string: "message://")!
if UIApplication.shared.canOpenURL(mailURL) {
    UIApplication.shared.open(mailURL, options: [:], completionHandler: nil)
}

答案 4 :(得分:0)

这将适用于 Xcode 11.5:

$commandString = @'
    -NoExit -Command & {
        Write-Host -ForegroundColor Green \"Hello, new window!\"
        Set-Location -Path \"c:\\\"
        Get-ChildItem
        Start-Sleep -Seconds 3
    }
'@

Start-Process -FilePath "powershell.exe" -ArgumentList $commandString