Estou trabalhando em um aplicativo rápido e simples, onde o usuário insere um endereço de e-mail e pressiona um botão que abre o aplicativo de e-mail, com o endereço inserido na barra de endereços. Eu sei como fazer isso em Objective-C, mas estou tendo problemas para fazer funcionar em Swift.
119
Embora as outras respostas estejam todas corretas, você nunca saberá se o iPhone / iPad que está executando seu aplicativo tem o aplicativo Mail da Apple instalado ou não, pois ele pode ser excluído pelo usuário.
É melhor oferecer suporte a vários clientes de e-mail. O código a seguir trata o envio de e-mail de uma forma mais elegante. O fluxo do código é:
mailto:..
que solicita que o usuário instale o aplicativo Mail da Apple.O código é escrito em Swift 5 :
Observe que omiti intencionalmente o corpo do aplicativo Outlook, pois não é possível analisá-lo.
Você também deve adicionar o código a seguir ao
Info.plist
arquivo que lista os esquemas de consulta URl que são usados.fonte
isHTML
o código acima como verdadeiro. Para outros clientes, não parece ser possível. Para mais informações, consulte stackoverflow.com/questions/5620324/mailto-link-with-html-bodyNão tenho certeza se você deseja alternar para o próprio aplicativo de e-mail ou apenas abrir e enviar um e-mail. Para a última opção vinculada a um botão IBAction:
fonte
class myClass: UIViewController, MFMailComposeViewControllerDelegate {
'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target
. O aplicativo trava em alguns dispositivos (iPhone 5, iPhone 6 e iPad Mini)No Swift 3 você se certifica de adicionar
import MessageUI
e precisa estar em conformidade com oMFMailComposeViewControllerDelegate
protocolo.Protocolo:
fonte
Para Swift 4.2+ e iOS 9+
Substitua [email protected] pelo endereço de e-mail desejado.
fonte
Swift 2, com verificação de disponibilidade :
fonte
Aqui está a aparência do Swift 4:
fonte
Resposta atualizada de Stephen Groom para Swift 3
fonte
Aqui está uma atualização para o Swift 4 se você deseja simplesmente abrir o cliente de e-mail por meio de
URL
:Isso funcionou perfeitamente bem para mim :)
fonte
Esta é uma solução direta de 3 etapas no Swift.
Adicionar para conformar o Delegado
E apenas crie seu método:
fonte
Você deve tentar enviar com o compositor de e-mail integrado e, se isso falhar, tente com o compartilhamento:
fonte
Observe que nem todos os usuários têm seus dispositivos configurados para enviar e-mails, por isso precisamos verificar o resultado de canSendMail () antes de tentar enviar. Observe também que você precisa capturar o retorno de chamada didFinishWith para descartar a janela de e-mail.
fonte
No controlador de visualização de onde você deseja que seu aplicativo de e-mail abra na torneira.
Coloque esta função dentro do seu controlador.
Estenda seu controlador de visualização e esteja em conformidade com o MFMailComposeViewControllerDelegate .
Coloque esse método e trate da falha, enviando seus e-mails.
fonte
Para aqueles de nós que ainda estão atrasados no Swift 2.3, aqui está a resposta de Gordon em nossa sintaxe:
fonte
Dê ao usuário a escolha de várias opções de e-mail (como iCloud, google, yahoo, Outlook.com - se nenhum e-mail estiver pré-configurado em seu telefone) para enviar e-mail.
fonte