电子邮件

浏览示例。 浏览示例

本文介绍如何使用 .NET Multi-platform App UI (.NET MAUI) IEmail 接口打开默认电子邮件应用。 加载电子邮件应用后,可以将其设置为使用指定的收件人、主题和正文创建新电子邮件。

IEmail 接口的默认实现通过 Email.Default 属性提供。 IEmail 接口和 Email 类都包含在 Microsoft.Maui.ApplicationModel.Communication 命名空间中。

开始使用

若要访问电子邮件功能,需要以下特定于平台的设置。

如果项目的目标 Android 版本设置为 Android 11 (R API 30) 或更高版本,则必须通过使用 Android 包装可见性要求的查询更新 Android 清单

Platforms/Android/AndroidManifest.xml 文件中,在 manifest 节点中添加以下 queries/intent 节点:

<queries>
  <intent>
    <action android:name="android.intent.action.SENDTO" />
    <data android:scheme="mailto" />
  </intent>
</queries>

使用 Email

电子邮件功能的工作原理是向 ComposeAsync 方法提供电子邮件信息作为参数。 在此示例中,EmailMessage 类型用于表示电子邮件信息:

if (Email.Default.IsComposeSupported)
{

    string subject = "Hello friends!";
    string body = "It was great to see you last weekend.";
    string[] recipients = new[] { "john@contoso.com", "jane@contoso.com" };

    var message = new EmailMessage
    {
        Subject = subject,
        Body = body,
        BodyFormat = EmailBodyFormat.PlainText,
        To = new List<string>(recipients)
    };

    await Email.Default.ComposeAsync(message);
}

文件附件

创建提供给电子邮件客户端的电子邮件时,可以添加文件附件。 会自动检测文件类型 (MIME),因此无需指定它。 某些邮件客户端可能会限制你发送的文件类型,或者可能完全阻止附件。

使用 EmailMessage.Attachments 集合管理附加到电子邮件的文件。

以下示例展示如何将图像文件添加到电子邮件附件。

if (Email.Default.IsComposeSupported)
{

    string subject = "Hello friends!";
    string body = "It was great to see you last weekend. I've attached a photo of our adventures together.";
    string[] recipients = new[] { "john@contoso.com", "jane@contoso.com" };

    var message = new EmailMessage
    {
        Subject = subject,
        Body = body,
        BodyFormat = EmailBodyFormat.PlainText,
        To = new List<string>(recipients)
    };

    string picturePath = Path.Combine(FileSystem.CacheDirectory, "memories.jpg");

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

    await Email.Default.ComposeAsync(message);
}

平台差异

并非所有 Android 电子邮件客户端都支持 EmailBodyFormat.Html,由于无法检测,因此建议发送电子邮件时使用 EmailBodyFormat.PlainText