メール

サンプルを参照します。 サンプルを参照する

この記事では、.NET マルチプラットフォーム アプリ 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 を使用することをお勧めします。