Power Apps から Outlook でメールを送信する|SendEmailV2・添付・HTML・宛先複数選択の全パターン

Power Apps から Outlook でメールを送信したいとき、Power Automate のフローは不要です。Office 365 Outlook コネクタをデータソースに追加するだけで、宛先の複数選択・HTML 装飾・添付ファイル付きの本格的なメール送信がアプリ単体で実現します。

Office 365 Outlook コネクタの追加

Power Apps Studio のデータメニューから「コネクタ」→「Office 365 Outlook」を追加します。ここで注意したいのは、個人用の Outlook.com コネクタと間違えないことです。職場・学校アカウントで使える Exchange Online に接続するコネクタを選んでください。追加が完了すれば、フローなしにアプリ内から直接メールを送れるようになります。

このコネクタは Power Apps の Premium コネクタではなく、Microsoft 365 のライセンスがあれば追加費用なしで利用できます。Power Automate を使わなくてよい分、アプリの設計がシンプルになり、送信ロジックをアプリ内に完結させられます。メール送信以外の通知手段についてはPower Automate Teams 通知の設定方法も参考にしてください。

SendEmailV2 関数の基本構文

ボタンの OnSelect プロパティに次のように書きます。

Office365Outlook.SendEmailV2(
    "recipient@example.com",
    "件名テキスト",
    "本文テキスト"
)

必須引数は To・Subject・Body の 3 つだけです。V2 を使う理由は、V1 が廃止予定のためです。数式の候補に V1 と V2 の両方が出てくるため、必ず V2 を選ぶようにしてください。V1 で作ったアプリは将来動かなくなる可能性があります。

To(宛先)の書き方パターン

宛先の指定方法は用途によって使い分けます。主なパターンは次のとおりです。

パターン記述例用途
ハードコード"user@example.com"固定の宛先(通知先など)
セミコロン区切り"a@example.com;b@example.com"複数宛先を固定で指定
ログインユーザーUser().Email自分自身への送信・確認メール
入力値TextInput1.Text画面で宛先を入力させる場合

複数宛先を動的に選択させたい場合はコンボボックスを使います。詳細は後述します。

Body の HTML 対応

HTML タグを Body に直接書く

Body 引数に HTML タグをそのまま書くと、装飾されたメールが届きます。

Office365Outlook.SendEmailV2(
    TextInput_To.Text,
    TextInput_Subject.Text,
    "<h2>申請が届きました</h2><p>申請者:<strong>" & User().FullName & "</strong></p>"
)

<h1><strong><p><ul> など標準的な HTML タグが使えます。テキストと HTML のどちらも渡せるので、シンプルな通知メールにも装飾が必要なレポートメールにも対応できます。

リッチテキストエディタを使う

画面上でユーザーが太字・色付け・見出しを入力できるようにしたい場合は、リッチテキストエディターコントロールを使います。Body に RichTextEditor1.HtmlText を渡すだけで、ユーザーが書式設定した内容をそのまま HTML メールとして送れます。

CC・BCC・重要度などのオプション引数

必須 3 引数の後にコンマを打ち、波括弧 {} でオプションを追加します。

Office365Outlook.SendEmailV2(
    "to@example.com",
    "件名",
    "本文",
    {
        Cc: "cc@example.com",
        Bcc: "bcc@example.com",
        Importance: "High"
    }
)

Importance は "High" / "Normal" / "Low" の文字列で指定します。Sensitivity(秘密度)は GUID が必要で複雑なため、通常は使いません。オプション引数は必要なものだけを波括弧の中に入れる書き方で、不要なものは省略できます。

添付ファイルを送信する

フォームの添付コントロールを流用する

Power Apps の Insert メニューには Attachment コントロール単体が存在しません。フォームコントロールを画面に追加すると内部に Attachment コントロールが含まれており、これを流用するのが最も簡単な方法です。

RenameColumns での列変換が必須

Attachment コントロールのデータは AddMediaButton1.Attachments などで取得できますが、列名が Value になっています。SendEmailV2 の Attachments 引数が期待する列名は ContentBytes です。そのため RenameColumns() で変換する必要があります。

Office365Outlook.SendEmailV2(
    "to@example.com",
    "添付あり",
    "本文",
    {
        Attachments: RenameColumns(
            AttachmentControl1.Attachments,
            "Value", "ContentBytes"
        )
    }
)

この RenameColumns を忘れると、添付ファイルが送信されないか、エラーになります。添付を実装するときに最も見落としやすいポイントです。

From(差出人変更)と ReplyTo の設定

From(差出人変更)を使うには、Exchange 側で対象アカウントへの「代理送信」権限が IT 管理者によって設定されている必要があります。権限がない状態で From を指定してもエラーになります。

ReplyTo はサポートデスクのメーリングリストなど、返信先を別のアドレスにしたい場面で便利です。From 権限は不要なので、一般ユーザーでも気軽に使えます。

コンボボックスで宛先を複数選択する

社内ユーザーを検索して複数の宛先を選べる UI を作るには、Office 365 Users コネクタとコンボボックスを組み合わせます。

  1. データソースに「Office 365 Users」コネクタを追加する
  2. ComboBox の Items に Office365Users.SearchUserV2({searchTerm: Self.SearchText, top: 10}).value を設定する
  3. ComboBox の DisplayFields に ["DisplayName"]、SearchFields に ["DisplayName", "Mail"] を設定する
  4. SendEmailV2 の To に Concat(ComboBox1.SelectedItems, Mail, ";") を渡す

Concat 関数の第3引数にセミコロンを指定することで、複数選択されたメールアドレスをセミコロン区切りの文字列に変換できます。これが SendEmailV2 の複数宛先形式と一致します。

Power Automate を使わない意義

Power Automate 経由でメールを送る方法は多くの記事で紹介されていますが、Office 365 Outlook コネクタを使えばフローが不要です。コネクタ追加だけで「宛先検索・CC/BCC・複数添付・HTML 装飾」のフル機能を実現できます。フローを作らない分、設計がシンプルになり、トラブルシューティングも容易になります。

Power Apps から Power Automate を呼び出す連携パターンについてはPower Apps からフローを呼び出す基礎記事で解説しています。メール送信に限らず、より複雑な処理が必要な場面ではフロー連携を使い分けるとよいでしょう。アウトプット系アクションの全体像についてはPower Apps / Power Automate アウトプット完全ガイドで整理しています。

まとめ

Office 365 Outlook コネクタと SendEmailV2 関数を組み合わせれば、Power Apps 単体で本格的なメール送信が実現します。To・Subject・Body の 3 引数を押さえたら、HTML 装飾・添付ファイル・コンボボックスでの複数宛先選択へと順番に機能を拡張していきましょう。RenameColumns の変換を忘れずに、という点だけ頭に入れておけば、実装で詰まることはほとんどなくなります。

Xでフォローしよう