Files
clawdbot/skills/himalaya/references/message-composition.md
2026-01-06 23:44:06 +01:00

3.7 KiB

Message Composition with MML (MIME Meta Language)

Himalaya uses MML for composing emails. MML is a simple XML-based syntax that compiles to MIME messages.

Basic Message Structure

An email message is a list of headers followed by a body, separated by a blank line:

From: sender@example.com
To: recipient@example.com
Subject: Hello World

This is the message body.

Headers

Common headers:

  • From: Sender address
  • To: Primary recipient(s)
  • Cc: Carbon copy recipients
  • Bcc: Blind carbon copy recipients
  • Subject: Message subject
  • Reply-To: Address for replies (if different from From)
  • In-Reply-To: Message ID being replied to

Address Formats

To: user@example.com
To: John Doe <john@example.com>
To: "John Doe" <john@example.com>
To: user1@example.com, user2@example.com, "Jane" <jane@example.com>

Plain Text Body

Simple plain text email:

From: alice@localhost
To: bob@localhost
Subject: Plain Text Example

Hello, this is a plain text email.
No special formatting needed.

Best,
Alice

MML for Rich Emails

Multipart Messages

Alternative text/html parts:

From: alice@localhost
To: bob@localhost
Subject: Multipart Example

<#multipart type=alternative>
This is the plain text version.
<#part type=text/html>
<html><body><h1>This is the HTML version</h1></body></html>
<#/multipart>

Attachments

Attach a file:

From: alice@localhost
To: bob@localhost
Subject: With Attachment

Here is the document you requested.

<#part filename=/path/to/document.pdf><#/part>

Attachment with custom name:

<#part filename=/path/to/file.pdf name=report.pdf><#/part>

Multiple attachments:

<#part filename=/path/to/doc1.pdf><#/part>
<#part filename=/path/to/doc2.pdf><#/part>

Inline Images

Embed an image inline:

From: alice@localhost
To: bob@localhost
Subject: Inline Image

<#multipart type=related>
<#part type=text/html>
<html><body>
<p>Check out this image:</p>
<img src="cid:image1">
</body></html>
<#part disposition=inline id=image1 filename=/path/to/image.png><#/part>
<#/multipart>

Mixed Content (Text + Attachments)

From: alice@localhost
To: bob@localhost
Subject: Mixed Content

<#multipart type=mixed>
<#part type=text/plain>
Please find the attached files.

Best,
Alice
<#part filename=/path/to/file1.pdf><#/part>
<#part filename=/path/to/file2.zip><#/part>
<#/multipart>

MML Tag Reference

<#multipart>

Groups multiple parts together.

  • type=alternative: Different representations of same content
  • type=mixed: Independent parts (text + attachments)
  • type=related: Parts that reference each other (HTML + images)

<#part>

Defines a message part.

  • type=<mime-type>: Content type (e.g., text/html, application/pdf)
  • filename=<path>: File to attach
  • name=<name>: Display name for attachment
  • disposition=inline: Display inline instead of as attachment
  • id=<cid>: Content ID for referencing in HTML

Composing from CLI

Interactive compose

Opens your $EDITOR:

himalaya message write

Reply (opens editor with quoted message)

himalaya message reply 42
himalaya message reply 42 --all  # reply-all

Forward

himalaya message forward 42

Send from stdin

cat message.txt | himalaya template send

Prefill headers from CLI

himalaya message write \
  -H "To:recipient@example.com" \
  -H "Subject:Quick Message" \
  "Message body here"

Tips

  • The editor opens with a template; fill in headers and body.
  • Save and exit the editor to send; exit without saving to cancel.
  • MML parts are compiled to proper MIME when sending.
  • Use himalaya message export --full to inspect the raw MIME structure of received emails.