Skip to content

Mail & Messaging

Connectors for getting a message — or a notification — out of a flow and into a human’s inbox or channel.

Connectorinvoke:What it does
Email (Send)email.sendSend mail over SMTP — recipients, subject, body, attachments.
Email (Fetch)imap.fetchRead mail over IMAP — useful as an inbound trigger source.
Terminal window
using:
- environment/prod
- zenvara/email
output:
message-id: !str
steps:
- $email:
invoke: email.send
on: smtp
with:
Subject: "Daily order summary for ${date}"
Body: "${summary.content}"
- return:
message-id: "${email.messageId}"

The SMTP/IMAP host and credentials live on the connection, referenced as secrets.

Connectorinvoke:What it does
Slackslack.*Post messages, upload files, interact with channels.
Microsoft Teamsteams.*Post to Teams channels / chats.
Signalsignal.*Send Signal messages.
Zoomzoom.*Meetings and Zoom API operations.

Notify — one abstraction over many channels

Section titled “Notify — one abstraction over many channels”
Connectorinvoke:What it does
Notifynotify.*A channel-agnostic notification verb that routes to whichever backend the connection points at.

Use notify.* when you want a flow to “tell someone” without hard-coding the channel — the environment decides whether that means email, Slack, or Teams, the same way it decides which database db resolves to. This keeps alerting logic portable across environments.

Pair a messaging connector with control flow to notify only when something goes wrong:

Terminal window
using:
- environment/prod
- zenvara/slack
output:
ok: !bool
steps:
- if: "len(errors) > 0"
$alert:
create: slack.message
on: ops-channel
with:
Channel: "#ops"
Text: "Pipeline ${flow-name} hit ${= len(errors)} errors"
- return:
ok: true