# Pop
Send emails from your terminal.
## Text-based User Interface
Launch the TUI
```bash
pop
```
## Command Line Interface
```bash
pop < message.md \
--from "
[email protected]" \
--to "
[email protected]" \
--subject "Hello, world!" \
--attach invoice.pdf
```
---
## Setup
`pop` works great with [Resend](https://resend.com), and the quickest way to get
started is to run to authenticate with Resend via OAuth:
```bash
pop auth
```
You can also set a `RESEND_API_KEY` in your environment:
```bash
export RESEND_API_KEY=$(pass RESEND_API_KEY)
```
(You can get a Resend API key at https://resend.com/api-keys.)
### SMTP
To configure `pop` to use `SMTP`, you can set the following environment
variables.
```bash
export POP_SMTP_HOST="smtp.gmail.com"
export POP_SMTP_PORT=587
export POP_SMTP_USERNAME="
[email protected]"
export POP_SMTP_PASSWORD="babyfrogsquad"
```
### Other Settings
To avoid typing your `From: ` email address, you can also set the `POP_FROM`
environment to pre-fill the field anytime you launch `pop`.
```bash
export POP_FROM="
[email protected]"
export POP_SIGNATURE="Sent with [Pop](https://github.com/charmbracelet/pop)!"
```
Set `POP_PLAINTEXT=true` or pass `--plaintext` to send the body as plain text
instead of rendering Markdown to HTML.
> **Note**: If you wish to use a resend account without a custom domain, you can
> use `
[email protected]` to send emails.
## Installation
Use a package manager:
```bash
# macOS or Linux
brew install pop
# Nix
nix-env -iA nixpkgs.pop
# Arch (btw)
yay -S charm-pop-bin
```
Install with Go:
```sh
go install github.com/charmbracelet/pop@latest
```
Or download a binary from the
[releases](https://github.com/charmbracelet/pop/releases).
## AI Agents and Skills
AI agents work great with `pop`. `pop --help` is typically enough to get them
going, but you can maximize their `pop` abilities with the builtin `pop skill`
command, which you can just print to `stdout`, or write to disk:
```bash
mkdir -p .skills/pop
pop skill > .skills/pop/SKILL.md
```
If you’re using [Crush](https://github.com/charmbracelet/crush), Claude Code,
Codex, or Cursor, or Pi there’s also a `pop install-skill` command
```bash
pop install-skill crush # install the Crush skill
pop install-skill codex # install the Codex skill
pop install-skill --help # more info
```
## Examples
Pop can be combined with other tools to create powerful email pipelines, such
as:
- [`charmbracelet/mods`](https://github.com/charmbracelet/mods)
- [`charmbracelet/gum`](https://github.com/charmbracelet/gum)
- [`maaslalani/invoice`](https://github.com/maaslalani/invoice)
### Crush
Use [`crush`](https://github.com/charmbracelet/crush) with `pop` to write an
email body with AI:
> **Note**: Use the `--preview` flag to preview the email and make changes
> before sending.
```bash
pop <<< "$(crush run 'Explain why CLIs are awesome')" \
--subject "The command line is the best" \
--preview
```
- [`charmbracelet/crush`](https://github.com/charmbracelet/crush)
### Gum
Use [`gum`](https://github.com/charmbracelet/gum) with `pop` to choose an email
to send to and from:
```bash
pop --from $(gum choose "
[email protected]" "
[email protected]" "
[email protected]")
--to $(gum filter < contacts.txt)
```
- [`charmbracelet/gum`](https://github.com/charmbracelet/gum)
### Invoice
Use [`invoice`](https://github.com/maaslalani/invoice) with `pop` to generate
and send invoices entirely from the command line.
```bash
FILENAME=invoice.pdf
invoice generate --item "Rubber Ducky" --rate 25 --quantity 2 --output $FILENAME
pop --attach $FILENAME --body "See attached invoice."
```
- [`maaslalani/invoice`](https://github.com/maaslalani/invoice)
## Feedback
We’d love to hear your thoughts on this project. Feel free to drop us a note!
- [Twitter](https://twitter.com/charmcli)
- [Discord](https://charm.land/discord)
- [The Fediverse](https://mastodon.social/@charmcli)
- [Slack](https://charm.land/slack)
## License
[MIT](https://github.com/charmbracelet/pop/blob/main/LICENSE)
---
Part of [Charm](https://charm.land).
Charm 热爱开源 • Charm loves open source