Estoy trabajando en una aplicación simple y rápida en la que el usuario ingresa una dirección de correo electrónico y presiona un botón que abre la aplicación de correo, con la dirección ingresada en la barra de direcciones. Sé cómo hacer esto en Objective-C, pero tengo problemas para que funcione en Swift.
119
Si bien otras respuestas son correctas, nunca se puede saber si el iPhone / iPad que está ejecutando su aplicación tiene la aplicación de correo de Apple instalada o no, ya que el usuario puede eliminarla.
Es mejor admitir varios clientes de correo electrónico. El siguiente código maneja el envío de correo electrónico de una manera más elegante. El flujo del código es:
mailto:..
que solicita al usuario que instale la aplicación Mail de Apple.El código está escrito en Swift 5 :
Tenga en cuenta que intencionalmente me perdí el cuerpo de la aplicación Outlook, ya que no es capaz de analizarlo.
También debe agregar el siguiente código al
Info.plist
archivo que incluye en la lista blanca los esquemas de consulta URl que se utilizan.fuente
isHTML
el código anterior en verdadero. Para otros clientes, no parece ser posible; para obtener más información, consulte stackoverflow.com/questions/5620324/mailto-link-with-html-bodyNo estoy seguro de si desea cambiar a la aplicación de correo o simplemente abrir y enviar un correo electrónico. Para la última opción vinculada a un botón IBAction:
fuente
class myClass: UIViewController, MFMailComposeViewControllerDelegate {
'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target
. La aplicación se bloquea en algunos dispositivos (iPhone 5, iPhone 6 y iPad Mini)En Swift 3, asegúrese de agregar
import MessageUI
y las necesidades se ajustan alMFMailComposeViewControllerDelegate
protocolo.Protocolo:
fuente
Para Swift 4.2+ y iOS 9+
Reemplace [email protected] con su dirección de correo electrónico deseada.
fuente
Swift 2, con verificación de disponibilidad :
fuente
Así es como se ve Swift 4:
fuente
Respuesta actualizada de Stephen Groom para Swift 3
fuente
Aquí hay una actualización para Swift 4 si simplemente está buscando abrir el cliente de correo a través de
URL
:Esto funcionó perfectamente bien para mí :)
fuente
Esta es una solución sencilla de 3 pasos en Swift.
Agregar para conformar el Delegado
Y solo crea tu método:
fuente
Debería intentar enviar con el redactor de correo incorporado, y si eso falla, intente con compartir:
fuente
Tenga en cuenta que no todos los usuarios tienen su dispositivo configurado para enviar correos electrónicos, por lo que debemos verificar el resultado de canSendMail () antes de intentar enviar. Tenga en cuenta también que debe capturar la devolución de llamada didFinishWith para cerrar la ventana de correo.
fuente
En el controlador de vista desde donde desea que se abra su aplicación de correo con el toque.
Pon esta función dentro de tu controlador.
Extienda su View Controller y cumpla con MFMailComposeViewControllerDelegate .
Pon este método y maneja el fallo, enviando tus mails.
fuente
Para aquellos de nosotros que todavía nos quedamos atrás en Swift 2.3, aquí está la respuesta de Gordon en nuestra sintaxis:
fuente
Permita que el usuario elija muchas opciones de correo (como iCloud, google, yahoo, Outlook.com, si no hay ningún correo preconfigurado en su teléfono) para enviar correo electrónico.
fuente