Find emails
Description
Finds messages in a mailbox folder and returns them as an array of email objects carrying subject, sender, recipients, flags, size and attachment metadata. Filter by read state, sender, recipient, subject, body text and a date range. Bodies are NOT fetched — wire a result into Read email for the text, or into Break to read its fields. Wire a result into Move, Copy, Delete or Set email flag; those nodes need no credentials because the email object carries its own server connection. Branches on success/error.
When to use
Use Find emails as the entry point to almost every mailbox pipeline. Wire
the output into a For each loop, then Break each element (a Break Email
node) to read its subject, from, and attachments fields.
Bodies are not fetched here, on purpose. Searching a mailbox should stay cheap no matter how large the messages are, so this node asks the server only for envelopes, flags, sizes and attachment structure. When you need the text, wire the element into Read email; when you need an attachment’s bytes, wire the attachment into Open email attachment. Attachment metadata — filename, content type, size — is available here without a second round trip.
from, to, cc and replyTo are arrays of email address objects, not
strings: Break one to get its name and address, or run it through Email
address to string for a formatted Name <a@b.c>. from is a single
address and can be null on malformed mail, so guard it with Is null? or
Default if null if you branch on it.
There is no “new email” trigger. The way to poll is Simple schedule → Find
emails with State UNREAD → process → Set email flag SEEN, so the next
run does not see the same messages again.
Pins
Input pins
| Pin | Type | Default | Notes |
|---|---|---|---|
| Credentials | Email credentials | — | Email credentials produced by any of the three email credentials nodes. |
| Folder | string | INBOX | Folder (mailbox) to search. Use the full path as the server spells it — run Find email folders to see them. |
| State | Email read state | ANY | Filters on the read flag: `ANY` (default), `UNREAD`, or `READ`. |
| From | string | — | Substring matched against the From header, case-insensitively, by the server. Empty (the default) does not filter. |
| To | string | — | Substring matched against the To header. Empty does not filter. |
| Subject | string | — | Substring matched against the Subject header. Empty does not filter. |
| Body contains | string | — | Substring searched for in the message body by the server. This can be slow on a large mailbox — servers scan message text to answer it. Empty does not filter. |
| Since | datetime | — | Only messages received on or after this date. IMAP compares dates only, ignoring the time of day and the zone. Leave unwired to not filter. |
| Before | datetime | — | Only messages received before this date, compared by date only. Leave unwired to not filter. |
| Limit | integer | 50 | Maximum number of messages to return, capped at 500. Asking for more takes the Error branch rather than silently returning fewer, so a truncated result is never mistaken for a complete one. |
| Order | Email sort order | NEWEST_FIRST | Which end of the folder Limit takes from: `NEWEST_FIRST` (default) or `OLDEST_FIRST`. Ordering is by arrival, which is what IMAP UIDs track. |
Output pins
| Pin | Type | Notes |
|---|---|---|
| Emails | Email[] | Matching messages. Break an element to read its subject, from, to, cc, date, flags, size, and attachments, or wire it directly into Read email, Move, Copy, Delete, or Set email flag — the email object carries its own server connection, so those nodes don't need credentials. |
Execution pins
| Pin | Direction |
|---|---|
| In | Input |
| Success | Output |
| Error | Output |
Example
Process new supplier invoices every ten minutes. Start with Simple schedule
(every 10 minutes), wire Email OAuth2 credentials into Find emails with
Folder INBOX, State UNREAD, Subject invoice, and Limit 25. On
Success, pass Emails to a For each loop. Inside the loop, Break the element,
loop over its Attachments, and wire each into Open email attachment →
HTTP request to upload it. Finish the iteration with Set email flag (SEEN,
true) and Move email to INBOX/Processed, both fed the same element — no
credentials needed on either, since the email already knows its server.