Я работаю над простым быстрым приложением, в котором пользователь вводит адрес электронной почты и нажимает кнопку, которая открывает почтовое приложение с введенным адресом в адресной строке. Я знаю, как это сделать в Objective-C, но мне не удается заставить его работать в Swift.
119
Хотя все остальные ответы верны, вы никогда не узнаете, установлено ли на iPhone / iPad, на котором запущено ваше приложение, приложение Apple Mail или нет, поскольку оно может быть удалено пользователем.
Лучше поддерживать несколько почтовых клиентов. Следующий код обрабатывает отправку электронной почты более изящным способом. Поток кода:
mailto:..
, при котором пользователю будет предложено установить приложение Apple Mail.Код написан на Swift 5 :
Обратите внимание, что я намеренно пропустил тело приложения Outlook, поскольку оно не может его проанализировать.
Вы также должны добавить в
Info.plist
файл следующий код, который заносит в белый список используемые схемы запросов URl.источник
isHTML
в приведенном выше коде значение true. Для других клиентов, это не представляется возможным, для дальнейшего чтения см stackoverflow.com/questions/5620324/mailto-link-with-html-bodyЯ не уверен, хотите ли вы переключиться на само почтовое приложение или просто открыть и отправить электронное письмо. Для последнего варианта, связанного с кнопкой IBAction:
источник
class myClass: UIViewController, MFMailComposeViewControllerDelegate {
'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target
. Приложение вылетает на некоторых устройствах (iPhone 5, iPhone 6 и iPad Mini)В Swift 3 вы обязательно добавляете
import MessageUI
и должны соответствоватьMFMailComposeViewControllerDelegate
протоколу.Протокол:
источник
Для Swift 4.2+ и iOS 9+
Замените TEST@EXAMPLE.COM желаемым адресом электронной почты.
источник
Swift 2, с проверкой доступности :
источник
Вот как это выглядит для Swift 4:
источник
Обновленный ответ Стивена Грума для Swift 3
источник
Вот обновление для Swift 4, если вы просто хотите открыть почтовый клиент через
URL
:Это отлично сработало для меня :)
источник
Это простое решение из трех шагов в Swift.
Добавить в соответствие с делегатом
И просто создайте свой метод:
источник
Вы должны попробовать отправить с помощью встроенного почтового композитора, а если это не удастся, попробуйте поделиться:
источник
Обратите внимание, что не все пользователи настроили свое устройство для отправки электронных писем, поэтому нам нужно проверить результат canSendMail () перед попыткой отправки. Также обратите внимание, что вам нужно поймать обратный вызов didFinishWith, чтобы закрыть почтовое окно.
источник
В контроллере представления, откуда вы хотите, чтобы ваше почтовое приложение открывалось при нажатии.
Поместите эту функцию в свой контроллер.
Расширьте свой контроллер представления и выполните MFMailComposeViewControllerDelegate .
Поставьте этот метод и обработайте сбой, отправив вашу почту.
источник
Для тех из нас, кто все еще отстает от Swift 2.3, вот ответ Гордона в нашем синтаксисе:
источник
Предоставьте пользователю возможность выбрать множество вариантов электронной почты (например, iCloud, google, yahoo, Outlook.com - если в его телефоне предварительно не настроена почта) для отправки электронной почты.
источник