Email Writing Guide
Write emails that look like they came from a real person — not an AI. Good email hygiene improves deliverability, avoids spam filters, and gets responses.
Subject Lines
- 40-60 characters — long subjects get truncated on mobile
- Be specific — "Q3 metrics review for Acme project" beats "Update"
- No ALL CAPS — spam filters penalize this heavily
- Avoid spam triggers — "free", "act now", "limited time", "click here", "urgent", "guaranteed", "no obligation"
- Match the tone — casual for teammates, professional for external contacts
HTML Body Structure
The --body flag in ravi email compose/reply/forward accepts HTML. Always use semantic tags — never pass plain text.
Note: --subject is only used with ravi email compose. Reply and forward commands auto-derive the subject from the original message (prepending Re: or Fwd:).
Do this:
<p>Opening line that states the purpose.</p>
<p>Supporting details in a second paragraph.</p>
<ul>
<li>Key point one</li>
<li>Key point two</li>
</ul>
<p>Closing with a clear next step or ask.</p>
<p>Best,<br>IDENTITY_NAME</p>
Don't do this:
Plain text with no tags at all
Or this:<br><br>Using br chains<br><br>instead of paragraphs
Rules:
- Always wrap text in
<p> tags
- Use
<h2> for section headers (not <h1>)
- Use
<ul>/<li> for lists, not dashes or asterisks
- Use
<a href="...">descriptive text</a> for links — never bare URLs
- No
<html>, <head>, or <body> wrapper tags — the email system adds these
- No
<br> chains — use separate <p> tags instead
- Get the identity name with:
ravi identity list --json | jq -r '.[0].name'
Recommended Template
Copy-paste starting point for most emails:
NAME=$(ravi identity list --json | jq -r '.[0].name')
ravi email compose \
--to "recipient@example.com" \
--subject "Specific subject under 60 chars" \
--body "<p>Hi Alex,</p>
<p>I'm reaching out about [specific topic]. [One sentence of context.]</p>
<p>[Core message — what you need, what you're sharing, or what you're asking.]</p>
<ul>
<li>[Key point or action item]</li>
<li>[Key point or action item]</li>
</ul>
<p>[Clear next step — what should the recipient do?]</p>
<p>Best,<br>$NAME</p>" --json
Tone and Style
- First person, active voice — "I'll send the report Monday" not "The report will be sent"
- Short paragraphs — 2-3 sentences max per
<p> tag
- Get to the point — state your purpose in the first sentence
- End with an action item — "Can you review by Friday?" not "Let me know your thoughts"
- No filler phrases — cut "I hope this email finds you well", "Just wanted to touch base", "Per our previous conversation"
- No robotic language — cut "I am writing to inform you", "Please be advised", "Kindly note"
- Match the thread tone — if they're casual, be casual. If they're formal, be formal.
Anti-Spam Essentials
These rules help your emails land in the inbox, not spam:
- High text-to-HTML ratio — more words, fewer tags. Don't over-format.
- No link shorteners — use full URLs. Spam filters distrust bit.ly, t.co, etc.
- Max 2-3 links per email — more links = higher spam score
- No ALL CAPS — not even for emphasis. Use
<strong> instead.
- No image-only emails — always include text content
- One topic per email — don't cram multiple requests into one message
- Don't repeat yourself — saying the same thing in different words triggers spam heuristics
Common Mistakes
| Mistake |
Why it's bad |
Do this instead |
Plain text in --body |
Renders as one blob, no formatting |
Wrap everything in <p> tags |
<br><br> chains |
Looks spammy, inconsistent spacing |
Use separate <p> tags |
| "Dear Sir/Madam" |
Outdated, signals mass email |
Use the recipient's name or "Hi there" |
| Wall of text |
Nobody reads long emails |
Break into 2-3 short paragraphs |
| "Click here" links |
Spam trigger, bad accessibility |
<a href="...">descriptive text</a> |
| Empty or vague subject |
Low open rates, looks like spam |
Be specific: "Invoice #1234 for January" |
| Excessive HTML styling |
High tag-to-text ratio triggers filters |
Keep formatting minimal |
| No signature |
Looks impersonal, unprofessional |
Sign with identity name |
| "Sent by AI" disclaimers |
Undermines trust, unnecessary |
Just write naturally |
Related Skills
- ravi-email-send — CLI commands for compose, reply, reply-all, and forward
- ravi-inbox — Read incoming email to understand what you're replying to
- ravi-identity — Get your identity name for email signatures
- ravi-feedback — Tell the Ravi team if email deliverability could be better
1---2name: ravi-email-writing3description: Best practices for writing high-quality emails that look professional and avoid spam filters. Reference this before composing, replying, or forwarding emails with ravi-email-send.4---56# Email Writing Guide78Write emails that look like they came from a real person — not an AI. Good email hygiene improves deliverability, avoids spam filters, and gets responses.910## Subject Lines1112- **40-60 characters** — long subjects get truncated on mobile13- **Be specific** — "Q3 metrics review for Acme project" beats "Update"14- **No ALL CAPS** — spam filters penalize this heavily15- **Avoid spam triggers** — "free", "act now", "limited time", "click here", "urgent", "guaranteed", "no obligation"16- **Match the tone** — casual for teammates, professional for external contacts1718## HTML Body Structure1920The `--body` flag in `ravi email compose/reply/forward` accepts HTML. Always use semantic tags — never pass plain text.2122**Note:** `--subject` is only used with `ravi email compose`. Reply and forward commands auto-derive the subject from the original message (prepending `Re:` or `Fwd:`).2324**Do this:**25```html26<p>Opening line that states the purpose.</p>2728<p>Supporting details in a second paragraph.</p>2930<ul>31 <li>Key point one</li>32 <li>Key point two</li>33</ul>3435<p>Closing with a clear next step or ask.</p>3637<p>Best,<br>IDENTITY_NAME</p>38```3940**Don't do this:**41```html42Plain text with no tags at all4344Or this:<br><br>Using br chains<br><br>instead of paragraphs45```4647**Rules:**48- Always wrap text in `<p>` tags49- Use `<h2>` for section headers (not `<h1>`)50- Use `<ul>`/`<li>` for lists, not dashes or asterisks51- Use `<a href="...">descriptive text</a>` for links — never bare URLs52- No `<html>`, `<head>`, or `<body>` wrapper tags — the email system adds these53- No `<br>` chains — use separate `<p>` tags instead54- Get the identity name with: `ravi identity list --json | jq -r '.[0].name'`5556## Recommended Template5758Copy-paste starting point for most emails:5960```bash61NAME=$(ravi identity list --json | jq -r '.[0].name')6263ravi email compose \64 --to "recipient@example.com" \65 --subject "Specific subject under 60 chars" \66 --body "<p>Hi Alex,</p>6768<p>I'm reaching out about [specific topic]. [One sentence of context.]</p>6970<p>[Core message — what you need, what you're sharing, or what you're asking.]</p>7172<ul>73 <li>[Key point or action item]</li>74 <li>[Key point or action item]</li>75</ul>7677<p>[Clear next step — what should the recipient do?]</p>7879<p>Best,<br>$NAME</p>" --json80```8182## Tone and Style8384- **First person, active voice** — "I'll send the report Monday" not "The report will be sent"85- **Short paragraphs** — 2-3 sentences max per `<p>` tag86- **Get to the point** — state your purpose in the first sentence87- **End with an action item** — "Can you review by Friday?" not "Let me know your thoughts"88- **No filler phrases** — cut "I hope this email finds you well", "Just wanted to touch base", "Per our previous conversation"89- **No robotic language** — cut "I am writing to inform you", "Please be advised", "Kindly note"90- **Match the thread tone** — if they're casual, be casual. If they're formal, be formal.9192## Anti-Spam Essentials9394These rules help your emails land in the inbox, not spam:9596- **High text-to-HTML ratio** — more words, fewer tags. Don't over-format.97- **No link shorteners** — use full URLs. Spam filters distrust bit.ly, t.co, etc.98- **Max 2-3 links per email** — more links = higher spam score99- **No ALL CAPS** — not even for emphasis. Use `<strong>` instead.100- **No image-only emails** — always include text content101- **One topic per email** — don't cram multiple requests into one message102- **Don't repeat yourself** — saying the same thing in different words triggers spam heuristics103104## Common Mistakes105106| Mistake | Why it's bad | Do this instead |107|---------|-------------|-----------------|108| Plain text in `--body` | Renders as one blob, no formatting | Wrap everything in `<p>` tags |109| `<br><br>` chains | Looks spammy, inconsistent spacing | Use separate `<p>` tags |110| "Dear Sir/Madam" | Outdated, signals mass email | Use the recipient's name or "Hi there" |111| Wall of text | Nobody reads long emails | Break into 2-3 short paragraphs |112| "Click here" links | Spam trigger, bad accessibility | `<a href="...">descriptive text</a>` |113| Empty or vague subject | Low open rates, looks like spam | Be specific: "Invoice #1234 for January" |114| Excessive HTML styling | High tag-to-text ratio triggers filters | Keep formatting minimal |115| No signature | Looks impersonal, unprofessional | Sign with identity name |116| "Sent by AI" disclaimers | Undermines trust, unnecessary | Just write naturally |117118## Related Skills119120- **ravi-email-send** — CLI commands for compose, reply, reply-all, and forward121- **ravi-inbox** — Read incoming email to understand what you're replying to122- **ravi-identity** — Get your identity name for email signatures123- **ravi-feedback** — Tell the Ravi team if email deliverability could be better