Sending Emails

Sending Emails

neomd sends every email as multipart/alternative:

  • text/plain — the raw Markdown you wrote (readable as-is in any client)
  • text/html — rendered by goldmark with a clean CSS wrapper

This means recipients using Gmail, Apple Mail, Outlook, etc. see properly formatted links, bold, headers, inline code, and code blocks — while you write nothing but Markdown.

When attachments are present the MIME structure is upgraded automatically:

  • Imagesmultipart/related with Content-ID — displayed inline in the email body
  • Other files (PDF, zip, …) → multipart/mixed — shown as downloadable attachments

Multiple From Addresses

Add [[senders]] blocks to config to define extra identities that share an existing account’s SMTP credentials:

[[senders]]
name    = "Work alias"
from    = "info@example.com"
account = "Personal"   # must match the name = field of an [[accounts]] block

In compose and pre-send, press ctrl+f to cycle through all configured accounts followed by all senders. The displayed From: field updates live. Sent copies always go to the active account’s Sent folder regardless of which From is selected.

CC, BCC, Reply-all, and Forward

In the compose form, ctrl+b toggles the Cc and Bcc fields (hidden by default). Bcc recipients receive the email but are never written to message headers. From the reader, r replies to the sender and R replies to the sender plus all Cc recipients (your own address excluded, Reply-To respected).

All replies include proper In-Reply-To and References headers for email threading, ensuring they appear in conversation threads in Gmail, Outlook, and Apple Mail.

Press f to forward an email — works from both the reader and the inbox list (the body is fetched automatically). The editor opens with the original message quoted and Fwd: prepended to the subject. Fill in the # [neomd: to: ] field and add your own text above the quoted block.

Emoji Reactions

Press ctrl+e from the inbox or reader view to react to an email with a single emoji — a fast, lightweight way to acknowledge receipt without writing a full reply.

Available reactions:

  • 👍 Thumbs up
  • ❤️ Love
  • 😂 Laugh
  • 🎉 Celebrate
  • 🙏 Thanks
  • 💯 Perfect
  • 👀 Eyes
  • ✅ Check

emoji

How it works:

  1. Press ctrl+e while viewing or selecting an email
  2. Choose an emoji by pressing 1-8 (instant send) or navigate with j/k and press enter
  3. Press esc to cancel

The reaction is sent immediately (no editor, no pre-send review) as a properly formatted email with:

Plain text:

👍

Simon Späti reacted via [neomd](https://neomd.ssp.sh)

---

> **John Doe** wrote:
>
> original email body quoted here

---

HTML: The emoji is displayed at 48px with a styled footer containing your name and a link to neomd. The original message is quoted below in a styled blockquote.

Threading: Reactions include proper In-Reply-To and References headers so they appear in the conversation thread (tested with Gmail, Outlook, and Apple Mail). The original email is marked with the \Answered flag.

From address: The reaction is automatically sent from the address that received the original email (same logic as regular replies). A copy is saved to your Sent folder.

Emoji reactions are perfect for quick acknowledgments, celebrating good news, or thanking someone without the overhead of composing a full reply.

Attachments

Attachments are tightly integrated with both the pre-send screen and neovim.

From the pre-send screen — press a to open yazi (auto-detected; override with $NEOMD_FILE_PICKER). Press D to remove the last attachment.

From within neovim — press <leader>a in any neomd-*.md buffer to open yazi in a floating terminal. Selected files are inserted at the cursor as visible [attach] /path/to/file lines.

ℹ️
Requires custom.lua added to your neovim config, and yazi installed.

neomd strips [attach] lines before sending:

  • Image files (.png, .jpg, .gif, .webp, .svg) → embedded inline in the HTML body; recipients see the image at that position
  • Other files → appended as a regular MIME attachment
Here is a screenshot:
[attach] /home/you/screenshots/overview.png

And a PDF for reference:
[attach] /home/you/docs/report.pdf

neomd

Pre-send Review

After saving and closing the editor, neomd shows a review screen before sending — add or remove attachments, save to Drafts, or re-open the editor without sending accidentally.

neomd

KeyAction
entersend
ppreview in $BROWSER — renders through the same pipeline as sending, with inline images visible
aattach file via yazi
Dremove last attachment
dsave to Drafts (IMAP APPEND with \Draft flag)
ere-open editor
esccancel

Press p to see exactly what the recipient will see — the email is rendered through the same goldmark Markdown-to-HTML pipeline used for sending. Local image paths from [attach] lines are converted to file:// URLs so the browser displays them inline.

Drafts

Press d in the pre-send screen to save to Drafts instead of sending. Navigate to Drafts with gd. To resume a saved draft, open it and press E — it re-opens in the editor with all fields pre-filled, and saving goes through the normal pre-send review.

Note: Drafts are stored as plain text only (not multipart/alternative) to preserve markdown formatting when reopening. This prevents formatting corruption like line break addition, pipe escaping, and italic style changes.

HTML Signatures

neomd supports dual-format signatures for professional email layouts with logos, tables, and styled text.

Configure separate text and HTML signatures in [ui.signature_block]:

[ui.signature_block]
  text = """[html-signature]"""

  html = """<table style="font-size: 14px; color: #333;">
  <tr>
    <td><img src="https://example.com/logo.png" width="80"></td>
    <td>
      <strong>Your Name</strong><br>
      Your Title, Company Name
    </td>
  </tr>
</table>"""

How it works:

  • The text signature appears in the editor and in the text/plain MIME part
  • The HTML signature is appended to the text/html MIME part only
  • Recipients using HTML email clients see the styled HTML signature
  • Recipients using plain text clients see the text signature

The [html-signature] placeholder:

Include [html-signature] in your text signature (as shown above) to control HTML signature inclusion on a per-email basis:

  • The placeholder is visible in the editor and pre-send preview
  • When you send, neomd strips the placeholder and appends the HTML signature to the HTML part
  • Delete the placeholder in the editor to send without the HTML signature for that specific email

This gives you full control: professional HTML signatures by default, plain signatures when needed.

Best practices:

  • Use inline styles only (no <style> blocks) for maximum email client compatibility
  • Host images externally (https://example.com/logo.png) so they display for recipients
  • Test your HTML signature by sending to yourself first
  • The -- separator is added automatically before the text signature

For full HTML signature configuration examples, see Configuration Reference.

For reading emails — images, links, attachments, and navigation — see Reading Emails.