Xamarin.Essentials: Correo electrónicoXamarin.Essentials: Email

La clase Email permite que una aplicación abra la aplicación de correo electrónico predeterminada con información especificada incluido el asunto, el cuerpo y los destinatarios (PARA, CC, CCO).The Email class enables an application to open the default email application with a specified information including subject, body, and recipients (TO, CC, BCC).

Primeros pasosGet started

Para empezar a usar esta API, lea la guía de introducción para Xamarin.Essentials con el fin de asegurarse de que la biblioteca está correctamente instalada y configurada en los proyectos.To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Sugerencia

Para usar la API de correo electrónico en iOS, debe ejecutarla en un dispositivo físico, si no, se producirá una excepción.To use the Email API on iOS you must run it on a physical device, else an exception will be thrown.

Uso de EmailUsing Email

Agregue una referencia a Xamarin.Essentials en su clase:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Para usar la funcionalidad de Email se llama al método ComposeAsync con un valor EmailMessage que contiene información sobre el correo electrónico:The Email functionality works by calling the ComposeAsync method an EmailMessage that contains information about the email:

public class EmailTest
{
    public async Task SendEmail(string subject, string body, List<string> recipients)
    {
        try
        {
            var message = new EmailMessage
            {
                Subject = subject,
                Body = body,
                To = recipients,
                //Cc = ccRecipients,
                //Bcc = bccRecipients
            };
            await Email.ComposeAsync(message);
        }
        catch (FeatureNotSupportedException fbsEx)
        {
            // Email is not supported on this device
        }
        catch (Exception ex)
        {
            // Some other exception occurred
        }
    }
}

Diferencias entre plataformasPlatform Differences

No todos los clientes de correo electrónico para Android admiten Html. Puesto que no hay ninguna manera de detectar este problema, recomendamos usar PlainText para enviar correos electrónicos.Not all email clients for Android support Html, since there is no way to detect this we recommend using PlainText when sending emails.

Datos adjuntosFile Attachments

Características en versión preliminar

El envío de archivos por correo electrónico está disponible como versión preliminar experimental en Xamarin.Essentials versión 1.1.0.Emailing files is available as an experimental preview in Xamarin.Essentials version 1.1.0. Esta característica permite que una aplicación envíe archivos por correo electrónico a través de clientes de correo electrónico en el dispositivo.This features enables an app to emails files in email clients on the device. Para habilitar esta característica, establezca la siguiente propiedad en el código de inicio de la aplicación:To enable this feature set the following property in your app's startup code:

ExperimentalFeatures.Enable(ExperimentalFeatures.EmailAttachments);

Una vez que se haya habilitado la característica, se puede enviar por correo electrónico cualquier archivo.After the feature enabled any file can be emailed. Xamarin.Essentials detectará automáticamente el tipo de archivo (MIME) y solicitará que el archivo se agregue como datos adjuntos.Xamarin.Essentials will automatically detect the file type (MIME) and request the file to be added as an attachment. Cada cliente de correo electrónico es diferente y podría admitir únicamente algunas extensiones de archivo o ninguna en absoluto.Every email client is different a may only support specific file extensions or none at all.

A continuación se muestra un ejemplo en el que se escribe texto en el disco y se agrega como datos adjuntos a un correo electrónico:Here is a sample of writing text to disk and adding it as an email attachment:

var message = new EmailMessage
{
    Subject = "Hello",
    Body = "World",
};

var fn = "Attachment.txt";
var file = Path.Combine(FileSystem.CacheDirectory, fn);
File.WriteAllText(file, "Hello World");

message.Attachments.Add(new EmailAttachment(file));

await Email.ComposeAsync(message);

APIAPI