設定・自動化

フローのメール送信でレコードのファイルを添付する

フローの「メールを送信」アクションは、Spring '25 から添付ファイルを付けられるようになりました。レコードに添付したファイルを集めてメールに付ける組み方と、添付を付けたときに変わる送信上限をまとめます。

2026.10.01

どういうときに使うのか

レコードに添付した見積書や申込書のPDFを、そのままお客様へメールで送りたい、という相談をよく受けます。以前のフローの「メールを送信」アクションはファイルを添付できなかったので、添付付きのメールはApexで組むのが定番でした。Messaging.SingleEmailMessage にファイルを載せて送る @InvocableMethod を作り、フローから呼ぶ形です。私たちが以前に組んだ自動化にも、この形が残っています。

Salesforce Admins ブログによると、Spring '25 から「メールを送信」アクションに添付ファイルのIDを渡せるようになりました。いまはApexを書かずに、フローだけで添付付きのメールを送れます。既存のApexを置き換えるときも、新しく作るときも、組み方は同じです。

添付に使う2つの入力

「メールを送信」アクションには、添付のための入力が2つあります。どちらも省略できます。

入力(日本語ヘルプでの表記)渡すもの
添付ファイル IDIDをカンマで区切ったテキスト
Attachment ID CollectionIDを1件ずつ入れたテキスト型のコレクション変数

Attachment ID Collection は日本語のヘルプでも英語のまま表記されています。件数が決まっていないファイルを付けるなら、コレクション変数で渡すほうが組みやすくなります。

渡せるのはContentVersionのID

公式ヘルプでは、渡せるIDは「ドキュメント」「コンテンツバージョン」「添付ファイル」の3種類です。いまのファイル(Salesforce Files)で言えば、ファイルの版を表す ContentVersion のIDを渡します。

ファイルまわりのオブジェクトは3つあり、取り違えやすいところです。

オブジェクト表すもの添付に渡せるか
ContentDocumentファイルそのもの渡せる3種類に入っていない
ContentVersionファイルの版。ContentDocumentId で親のファイルを指す渡せる
ContentDocumentLinkファイルとレコードの結びつき渡せる3種類に入っていない
ContentDocumentLink から辿れるのは ContentDocumentId です。これを添付に渡さず、ContentVersion の ID に取り直してください。

フローの組み方

レコードに最初に添付されたファイルを、最新の版だけ集めて送る例です。画面フローでも自動起動フローでも、recordId に対象レコードのIDが入っていれば同じ形で組めます。

  1. テキスト型のコレクション変数を作る

    変数を新しく作り、データ型をテキストにして、複数の値を持てるコレクションにします。ここでは名前を varAttachmentIds とします。

  2. 「レコードを取得」でContentVersionを集める

    オブジェクトに ContentVersion を選び、条件を2つ置きます。FirstPublishLocationId が {!recordId} と等しいこと、IsLatest が True であることです。取得するのは1件だけでなく、条件に合うすべてのレコードにします。

  3. 「ループ」で1件ずつ取り出す

    集めたレコードのコレクションをループします。

  4. 「割り当て」でIDを足す

    ループの中に割り当てを置き、varAttachmentIds に、ループ中のレコードの Id を追加します。公式ヘルプでは、コレクションへの追加は値を末尾に足す操作です。ループの中には割り当てだけを置きます。

  5. ループの後に「メールを送信」を置く

    受信者アドレス・件名・本文を入れ、Attachment ID Collection に varAttachmentIds を渡します。1通にまとめて送るので、ループの中には置きません。

IsLatest を条件に入れないと、版を上げたファイルの古い版まで集めてしまいます。最新の版だけを送るなら、この条件は外せません。

ここで間違えやすい

FirstPublishLocationId は、その版が最初に公開された場所のIDです。公式リファレンスでは、個人のライブラリや「マイファイル」に最初に置いた場合、所有者のユーザーIDが入ると書かれています。

つまり、次のファイルは上の条件では拾えません。

  • 「マイファイル」にアップロードしてから、レコードに共有したファイル
  • 別のレコードに添付したファイルを、あとから共有したもの

レコードに結びついているファイルをすべて対象にしたいときは、ContentDocumentLink を LinkedEntityId で絞って取得し、そこから ContentDocumentId を辿ります。公式リファレンスにあるとおり、ContentDocumentLink へのSOQLは Id・ContentDocumentId・LinkedEntityId のどれかで絞る必要があります。

添付を付けると送信上限が変わる

添付ファイルを付けると、アクションが内部で呼ぶAPIが変わり、日次の送信上限の数え方も変わります。

使い方日次の送信上限
添付・メールテンプレート・「送信時にメールを記録」のどれも使わないワークフローメールの日次上限
添付ファイルを付ける単一メールの上限(General Email Limit)
メールテンプレートを使う単一メールの上限(General Email Limit)
「送信時にメールを記録」を使う単一メールの上限

公式ヘルプでは、単一メールは組織ごとに、外部のメールアドレスへ1日あたり5,000件までです。ワークフローメールの枠で送っていた通知に添付を足すと、数える枠が変わります。送信件数の多い通知に添付を足す前に、1日に何通送っているかを見積もってください。

サイズの上限もあります。添付ファイルを含めて35MBを超えるメールは、実行時にフローがエラーになります。ファイルが大きくなりやすい運用では、添付する件数とサイズを先に見積もります。

もう1つ、公式ヘルプにあるとおり、フローはインタビューのトランザクションが終わるまでメールを送りません。送信の後ろに要素を足すときは、この順番を前提に組みます。

確認した環境

  • 2026年10月 / Salesforce Summer '26(API バージョン 67.0)時点の公式ドキュメントで確認しています
  • 添付に対応した時期は、Salesforce Admins ブログの Spring '25 のフロー新機能の記事で確認しています

まとめ

  • フローの「メールを送信」アクションは、Spring '25 から添付ファイルを付けられます
  • 添付には「添付ファイル ID」か「Attachment ID Collection」を使い、ContentVersion のIDを渡します
  • 「レコードを取得」で ContentVersion を集めるときは、IsLatest を True に絞り、古い版を除きます
  • FirstPublishLocationId で絞ると、マイファイル経由や他のレコードから共有したファイルは拾えません
  • 添付を付けると、日次の上限は単一メールの枠で数えられます。サイズは添付を含めて35MBまでです

参考

Salesforceの導入・運用についてご相談ください

導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。