[Tips and Tricks] Enviar un email con adjuntos desde Windows Phone 8.1

AttachmentIntroducción

En nuestras aplicaciones necesitamos en determinadas ocasiones enviar emails. Ya sea desde una sección de contacto o a enviar un email en una determinada acción de nuestra aplicación. En Windows Phone 8.0 teníamos ciertas limitaciones que ahora han sido paliadas, como enviar adjuntos. En este Tips and Tricks vamos a ver como se envían correos en Windows Phone 8.1 con adjuntos.

¿Te apuntas?

EmailComposeTask

En Windows Phone 8.0 utilizábamos el launcher EmailComposeTask para enviar emails desde nuestras aplicaciones.  Era una manera muy fácil y sencilla de enviar emails además, utilizando launchers, conseguíamos una manera consistente con el resto de la experiencia otorgada por el sistema.

Para poder utilizar el launcher, lo primero que debemos hacer es añadir la siguiente referencia:

using Microsoft.Phone.Tasks;

Una vez añadida, podemos enviar un email con facilidad:

var emailComposeTask = new EmailComposeTask();

emailComposeTask.Subject = "Asunto";
emailComposeTask.Body = "Mensaje";
emailComposeTask.To = "to@example.com";
emailComposeTask.Cc = "cc@example.com";
emailComposeTask.Bcc = "bcc@example.com";

emailComposeTask.Show();

Creamos un objeto de tipo EmailComposeTask, rellenamos la información necesaria (destinatario, asunto, mensaje, etc) y llamamos al método Show.

NOTA: Recordar que como otros launchers, en el emulador no funcionará, necesitaremos un dispositivo real para probar el envio.

Email con adjuntos

A pesar de la sencillez, el launcher EmailComposeTask cuenta con ciertas limitaciones de peso. Una de las más sonadas es que no permite enviar adjuntos.

En Windows Phone 8.1 podemos enviar emails con adjuntos utilizando las clases EmailMessage y EmailManager.

La clase EmailMessage nos permite definir el email a enviar, desde el destinatario y el asunto, hasta los ficheros adjuntos a enviar. Cuenta con las siguientes propiedades:

  • To: Destinatario del email.
  • Subject: Asunto del email.
  • Cc: Destinatarios CC del email
  • Bcc: Destinatarios BCC del email.
  • Body: Cuerpo del email.
  • Attachments: Adjuntos del email. Colección de tipo EmailAttachment.

EmailManager proporciona el método ShowComposeNewEmailAsync que acepta como parámetro un objeto de tipo EmailMessage que abre la vista de la App de email con todos los datos del mismo rellenos permitiendo al usuario enviar el email.

El uso es sencillo. Crearemos un servicio de envio de emails para inyectar en nuestra viewmodel y nos permita realizar las acciones necesarias con el correo. Tendremos en la definición del mismo un método como el siguiente:

Task Send(string recipient, string subject, EmailAttachment attachment);

Nos permite enviar un email indicando destinatario, asunto y mensaje.

NOTA: En este ejemplo, hemos realizado el caso más simple al enviar correo, podemos tener varias sobrecargas del mismo método aceptando más parámetros.

La definición del método es la siguiente:

public async Task Send(string recipient, string subject, EmailAttachment attachment)
{
     var email = new EmailMessage();
     email.To.Add(new EmailRecipient(recipient));
     email.Subject = subject;
     email.Attachments.Add(attachment);

     await EmailManager.ShowComposeNewEmailAsync(email);
}

Creamos un objeto EmailMessage con las propiedades básicas y llamamos el método ShowComposeNewEmailAsync de la clase EmailManager.

El archivo adjunto sera un pequeño archivo de texto:

private static async Task<StorageFile> CreateFile()
{
     var localFolder = ApplicationData.Current.LocalFolder;
     var file = await localFolder.CreateFileAsync("file.txt", CreationCollisionOption.ReplaceExisting);
     await FileIO.WriteTextAsync(file, "Ejemplo Email Adjuntos");

     return file;
}

Al enviar el email, crearemos el fichero, y llamaremos al método Send de nuestro propio servicio:

var attachment = new EmailAttachment("file", await CreateFile());
await _emailService.Send("test@correo.es", "Ejemplo envio email con adjuntos", attachment);
Email con adjuntos

Email con adjuntos

Podéis descargar el ejemplo realizado a continuación:

Más información

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s