Xamarin.Essentials:電子メール

アプリケーションで Email クラスを使用すると、件名、本文、受信者 (TO、CC、BCC) などの情報を指定して既定のメール アプリケーションを開くことができます。

Email の機能にアクセスするには、次のプラットフォーム固有の設定が必要です。

プロジェクトのターゲット Android バージョンが Android 11 (R API 30) に設定される場合、新しいパッケージの可視性要件で使用されるクエリで Android マニフェストを更新する必要があります。

[プロパティ] フォルダーにある AndroidManifest.xml ファイルを開き、manifest ノードの内部に以下を追加します。

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

作業開始

この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。

ヒント

iOS で Email API を使用するには、物理デバイスで実行されている必要があります。それ以外の場合、例外がスローされます。

Email の使用

クラスの Xamarin.Essentials への参照を追加します。

using Xamarin.Essentials;

Email 機能は、メールに関する情報を含む EmailMessage を使用して ComposeAsync メソッドを呼び出すと機能します。

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
        }
    }
}

添付ファイル

この機能により、アプリではデバイスのメール クライアントでファイルをメール送信できます。 Xamarin.Essentials では、ファイルの種類 (MIME) が自動的に検出されて、ファイルを添付ファイルとして追加することが要求されます。 メール クライアントはそれぞれ異なるものであり、特定のファイル拡張子のみをサポートできるか、またはいずれもサポートできません。

テキストをディスクに書き込み、メールの添付ファイルとして追加するサンプルを次に示します。

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);

プラットフォームによる違い

Android の一部のメール クライアントは Html を検出する手段がなく、これをサポートしていないため、メールを送信するときは PlainText を使用することをお勧めします。

API

他の Xamarin ビデオは、Channel 9 および YouTube でご覧いただけます。