Home

Awesome

Pop

<p> <img src="https://stuff.charm.sh/pop/pop-logo.png" width="400" /> <br /> <a href="https://github.com/charmbracelet/pop/releases"><img src="https://img.shields.io/github/release/charmbracelet/pop.svg" alt="Latest Release"></a> <a href="https://pkg.go.dev/github.com/charmbracelet/pop?tab=doc"><img src="https://godoc.org/github.com/golang/gddo?status.svg" alt="Go Docs"></a> <a href="https://github.com/charmbracelet/pop/actions"><img src="https://github.com/charmbracelet/vhs/workflows/build/badge.svg" alt="Build Status"></a> </p>

Send emails from your terminal.

<img width="500" src="https://vhs.charm.sh/vhs-5Dyv3pvzB2YwtUSr72LqSz.gif" alt="pop mail text-based client">

Text-based User Interface

Launch the TUI

pop

Command Line Interface

pop < message.md \
    --from "me@example.com" \
    --to "you@example.com" \
    --subject "Hello, world!" \
    --attach invoice.pdf
<img width="500" src="https://vhs.charm.sh/vhs-5Cr6Gt1YVBjxGr9zdS85AO.gif" alt="pop mail command line client">
<img width="600" src="https://stuff.charm.sh/pop/resend-x-charm.png" alt="Resend and Charm logos">

To use pop, you will need a RESEND_API_KEY or configure an SMTP host.

You can grab one from: https://resend.com/api-keys.

Resend Configuration

To use the resend delivery method, set the RESEND_API_KEY environment variable.

export RESEND_API_KEY=$(pass RESEND_API_KEY)

SMTP Configuration

To configure pop to use SMTP, you can set the following environment variables.

export POP_SMTP_HOST=smtp.gmail.com
export POP_SMTP_PORT=587
export POP_SMTP_USERNAME=pop@charm.sh
export POP_SMTP_PASSWORD=hunter2

Environment

To avoid typing your From: email address, you can also set the POP_FROM environment to pre-fill the field anytime you launch pop.

export POP_FROM=pop@charm.sh
export POP_SIGNATURE="Sent with [Pop](https://github.com/charmbracelet/pop)!"

Note: If you wish to use a resend account without a custom domain, you can use onboarding@resend.dev to send emails.

Installation

Use a package manager:

# macOS or Linux
brew install pop

# Nix
nix-env -iA nixpkgs.pop

# Arch (btw)
yay -S charm-pop-bin

Install with Go:

go install github.com/charmbracelet/pop@latest

Or download a binary from the releases.

Examples

Pop can be combined with other tools to create powerful email pipelines, such as:

Mods

Use mods with pop to write an email body with AI:

Note: Use the --preview flag to preview the email and make changes before sending.

pop <<< "$(mods -f 'Explain why CLIs are awesome')" \
    --subject "The command line is the best" \
    --preview
<img width="600" src="https://vhs.charm.sh/vhs-1O3zo8Nsi2kPVW3vOBw4WH.gif" alt="Generate email with mods and send email with pop.">

Gum

Use gum with pop to choose an email to send to and from:

pop --from $(gum choose "vt52@charm.sh" "vt78@charm.sh" "vt100@charm.sh")
    --to $(gum filter < contacts.txt)
<img width="600" src="https://vhs.charm.sh/vhs-Et9ooHB6L1XVWDL9U1TfI.gif" alt="Select contact information with gum and send email with pop.">

Invoice

Use invoice with pop to generate and send invoices entirely from the command line.

FILENAME=invoice.pdf
invoice generate --item "Rubber Ducky" --rate 25 --quantity 2 --output $FILENAME
pop --attach $FILENAME --body "See attached invoice."
<img width="600" src="https://vhs.charm.sh/vhs-4TRyv82BBDKOutgWdvyshr.gif" alt="Generate invoice with invoice and attach file and send email with pop.">

Feedback

We’d love to hear your thoughts on this project. Feel free to drop us a note!

License

MIT


Part of Charm.

<a href="https://charm.sh/"> <img alt="The Charm logo" width="400" src="https://stuff.charm.sh/charm-badge.jpg" /> </a>

Charm 热爱开源 • Charm loves open source