Articles

Mejorar la entrega de correo en una aplicación iOS

¿Qué es MFMailComposeViewController?

Es un controlador de vista que presenta el contenido de un correo electrónico. Puede ser rellenado previamente por el desarrollador, pero el usuario puede cambiar cualquier valor y necesita enviarlo manualmente.

El MFMailComposeViewController in iOS 13.

Aquí mostramos un controlador de vista:

Creación y presentación de un MFMailComposeViewController.

// 1 Necesita importar MessageUI para usar MFMailComposeViewController.

// 2 Como es posible que su usuario no tenga una cuenta de correo, debemos verificar si es posible enviar un correo.

Esto se puede hacer utilizando el método canSendMail. Si el usuario no tiene su dispositivo configurado para enviar correos electrónicos, puede mostrar una alerta o abrir una URL con mailto, pero en este ejemplo, solo imprimiremos un mensaje de error.

// 3 A continuación, necesitamos crear el MFMailComposeViewController, que se presentará. Al hacerlo, podemos personalizar cada aspecto del correo. Podemos establecer su tema, agregar una lista de destinatarios, carbon copy y blind carbon copy.

El cuerpo del correo electrónico se puede configurar como HTML o como texto normal. Para agregar datos como un archivo adjunto, se necesitan los datos, así como el título del archivo adjunto y el tipo mime.

Puede encontrar una extensa lista de posibles tipos mime aquí. Incluso podemos establecer la dirección de correo electrónico del usuario como la dirección de envío preferida, por lo que el usuario ya no necesita manipular el correo electrónico después de que esté preparado.

También necesitamos establecer un mailComposeDelegate para manejar eventos en este MFMailComposeViewController.

// 4 Finalmente podemos mostrar el MFMailComposeViewController.

Una vez que el usuario haya terminado, se notificará al delegado, por lo que se llamará al método mailComposeController(_:didFinishWith:error:) del controlador de vista que se presenta.

Aquí, podemos comprobar si el usuario realmente envió el correo electrónico, si el correo electrónico se guardó para enviarlo más tarde, o si el envío se canceló o falló. En la mayoría de los casos, solo querrá descartar el MFMailComposeViewController actual, ya que ya no es necesario.

Implementando MFMailComposeViewControllerDelegate.

Aunque puede proporcionar su propia interfaz de usuario para permitir que los usuarios ingresen destinatarios, temas y texto, aún debe presentar este controlador de vista adicional, porque Apple no proporciona forma de enviar un correo electrónico sin hacer esto.

En muchos casos, esta puede no ser la mejor solución y puede tener algunos inconvenientes, dependiendo de su caso de uso.

La mayor desventaja es que revelas todo a tu usuario. Pueden ver el mensaje completo, todos los archivos adjuntos y la dirección de correo electrónico del destinatario.

Además, el usuario necesita tener una cuenta de correo configurada en su dispositivo, de lo contrario no podrá enviar ningún correo. Y, dado que el usuario necesita confirmar explícitamente el envío del correo, su flujo a través de la aplicación no es tan conveniente como podría ser.

Pero, por suerte, hay una forma alternativa de enviar correos.