Huashu Design
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
An n8n workflow that watches a mailbox over IMAP and asks OpenAI to write a casual reply to each new unread email. The reply is saved as a draft in Fastmail, so you read it and send it yourself.
Draft email replies in Fastmail with OpenAI is an n8n workflow in the Productivity category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
A new unread email
It starts when an unread email arrives in the mailbox it watches over IMAP, and it reads these fields:
A draft reply in the Drafts folder of the Fastmail account for each new unread email, ready for you to edit and send. The workflow sends nothing
What you need before you start.
Mail trigger
Watches a mailbox and passes on each new unread email with its sender, subject, text and message id.
NeedsThe IMAP host, port, user and password or app password
Language model
Writes the reply text from the subject and the body of the email with gpt-6-luna.
NeedsOpenAI API key
Mail host
Returns the account id and the mailboxes, and stores the reply as a draft through its JMAP API.
NeedsA Fastmail API token with the Email scope
Checked by Mindket on 13 Nov 2026
This n8n workflow writes reply drafts for the email you receive. It watches a mailbox over IMAP. For each new unread email it sends the subject and the text to an OpenAI model with a prompt for a short, casual reply. The reply keeps the language of the email and its level of formality. The workflow then asks Fastmail for the account details, finds the Drafts folder and saves the reply there as a draft under the original message. Nine nodes run the flow, and nothing is ever sent.
People who get a lot of personal email and want a first draft waiting in the Drafts folder, such as freelancers, small business owners and anyone with a busy inbox. Skip it for mail that needs facts the model cannot know, since it writes from the email alone.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Freelancing | Freelancers | Get a first answer ready for routine client questions | A designer opens Drafts in the morning and edits three short replies. |
| Small business | Shop owners | Answer customers in their own language | A shop owner finds a German draft that keeps the formal Sie. |
| Property | Landlords and agents | Keep routine tenant messages answered | An agent edits a draft that thanks a tenant for a meter reading. |
| Personal | Anyone with a busy inbox | Clear the replies that need only a few lines | A person answers an invitation with a draft that just needs a date. |
You need a little n8n: import a file, add three credentials and create one Fastmail API token. The workflow’s own sticky notes give no setup time.
Any n8n that can reach your IMAP server, Fastmail and OpenAI will run it. The usual setup watches the Fastmail mailbox itself over IMAP.
OpenAIEmail Trigger (IMAP)Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Three accounts cover every step.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| IMAP mailbox | The host, port, user and password or app password of the mailbox to watch |
| Fastmail | An API token with the Email scope, made in Settings, Privacy & Security, Manage API tokens |
| OpenAI | An API key |
workflow.json.Email Trigger (IMAP).Authorization and the value Bearer <YOUR_FASTMAIL_API_TOKEN>, using your own token. Select it in Session, Get Mailbox IDs and upload draft email.OpenAI.Re: and the subject of your test email should be there.Leave the workflow published. When an unread email arrives, a draft shows up in Drafts once the run ends. Open it in Fastmail, edit it and send it yourself. The original message is not changed, and no reply leaves on its own.
| To change | Where |
|---|---|
| The tone, the sign-offs and the languages | The prompt in OpenAI |
| The model | OpenAI |
| Which mail is read | The Custom Email Rules in Email Trigger (IMAP), ["UNSEEN"] by default |
| The watched mailbox | The Mailbox field of the trigger, INBOX by default |
A customer writes in German to ask when an order will arrive and addresses you with Sie.
upload draft email saves a draft headed Re: with the same subject. It greets the customer in German, keeps the formal Sie, adds a thanks and signs off. You add the date and send it.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Here an email box starts the flow, an OpenAI box writes the text and three Fastmail calls file it as a draft. Send yourself one test email and open the run to see each box’s output.
For experts. Fastmail is called through its JMAP API with plain HTTP Request nodes and a Header Auth credential.
| Node | What it does | What to know |
|---|---|---|
Email Trigger (IMAP) | Version 2.1 trigger on the unread mail of one mailbox | Fetch Only New Emails is on, and the mail stays unread because the post-process action is nothing |
OpenAI | The OpenAI node, version 1.5, text message operation | Reads subject and textPlain from the step before and returns the reply as message.content |
Get Mailbox IDs | JMAP Mailbox/get for the account | The account id comes from Session, under primaryAccounts for the mail capability |
gather data for draft email | Joins the pieces of the draft | The recipient is the Reply-To address, or the sender when there is none |
upload draft email | JMAP Email/set that creates the draft | Marked $draft, with inReplyTo and references set to the original message id |
The model is near its shutdown date, and a few things are worth checking on the first run.
gpt-4o-2024-08-06, gpt-4o-2024-11-20 and gpt-4o-mini-2024-07-18 with a shutdown on 14 January 2027 and names gpt-6-luna as the replacement. Mindket’s copy uses gpt-6-luna, which has a reasoning effort setting that defaults to medium. This node does not set itnotCreated, so check the output of upload draft email on the first runAn n8n workflow that watches a mailbox over IMAP for new unread email. For each one it asks OpenAI to write a short, casual reply in
the sender's language. It then saves the reply as a draft in the Drafts folder of a Fastmail account, filed under the original
message. Nothing is sent. You read each draft, edit it and send it yourself.
workflow.json: the workflow as n8n exports it, eleven nodes: nine that run and two sticky notes. It holds no credential.README.md: these notes.gpt-6-luna, in place of gpt-4o. See "Good to know" for the dates.Email Trigger (IMAP) is now version 2.1. Version 2 with the mail left unread re-reads every unread email each time a new oneto field in gather data for draft email no longer fails when an email has no Reply-To header, or one without angleupload draft email builds its request body with JSON.stringify. The original pasted the reply into a JSON text by hand, so ainReplyTo and references. The JMAP mailworkflow.json.Email Trigger (IMAP).Authorization and its value to Bearer <YOUR_FASTMAIL_API_TOKEN>, with your ownSession, Get Mailbox IDs and upload draft email.OpenAI.Re: and the subject of your test email should be there.Email Trigger (IMAP) waits on the inbox and passes on each new unread email. It also downloads attachments, which no laterGet fields from source email keeps the plain-text body, the sender, the subject, the message id and the Reply-To header.OpenAI gets the subject and body with a prompt that asks for a casual reply. The prompt asks for a greeting and a sign-off inSession asks Fastmail for the JMAP session, which holds the account id. Get Mailbox IDs lists the account's mailboxes.Split Out turns the list into one item per mailbox, and Filter for drafts folder keeps the one whose role is drafts.gather data for draft email joins the folder id, the recipient, the Re: subject, the reply text and the message id.upload draft email sends one JMAP Email/set call that creates the draft in that folder, marked as a draft and threaded underOpenAI. Change the tone, the sign-offs or the languages there.OpenAI.Email Trigger (IMAP). The default is ["UNSEEN"].INBOX by default.gpt-4o-2024-08-06, gpt-4o-2024-11-20 andgpt-4o-mini-2024-07-18 with a shutdown on 14 January 2027 and names gpt-6-luna as the replacement. This node has no tools, sogpt-6-luna has a reasoning effort setting that defaults to medium, and this node does not set it.Email/set with a normal 200 reply that lists the draft under notCreated. Look at the output ofupload draft email the first time to see that created holds your draft.NOTICE.md 637 B README.md 5 KB workflow.json 13 KB
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…
zarazhangrui · Skill
Builds HTML presentations from scratch or from a PowerPoint file and shows visual style previews to pick from, for people who want web slides with no CSS or Ja…
iptv-org · Kit
Collects publicly available live TV channels from many countries into playlists that any video player with live streaming can open. Made for viewers and for de…
uwg · Kit
Holds a set of image upscaling models gathered from the OpenModelDB community, for people who want to enlarge low-resolution pictures with AI on their own comp…