Вы не собрали весь свой код там. Что вы делаете, это открываете URL mailto:test@gmail.com
, что не является правильным способом сделать это. Вы должны использовать MFMailComposeViewController
В первую очередь:
import MessageUI
И ваш код должен быть похож на:
@IBAction func sendEmailTest(_ sender: Any) {
if MFMailComposeViewController.canSendMail() {
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
composeVC.setToRecipients(["test@gmail.com"])
composeVC.setSubject("Email Subject")
composeVC.setMessageBody("", isHTML: false)
self.present(composeVC, animated: true, completion: nil)
} else {
print("Cannot send mail")
}
}
Также включите способ обработки кода после того, как пользователь завершил работу с составителем почты, включив после него вышеуказанный метод:
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true, completion: nil)
}
Подробнее о MFMailComposeViewController можно узнать на сайте разработчиков Apple здесь: https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontroller
Если вы действительно хотите открыть URL, вам следует реализовать следующее:
@IBAction func sendEmailTest(_ sender: Any) {
if let url: NSURL = NSURL(string: "mailto:test@gmail.com") {
UIApplication.shared.canOpenURL((url as NSURL) as URL)
}
}
Убедитесь, что вы запускаете его на реальном устройстве, а не на симуляторе.
Но MFMailComposeViewController должен быть правильным способом его реализации.
Надеюсь, это поможет.