A minimalist CLI email client for developers. Connect directly to standard IMAP/SMTP servers, pipe stdin to send messages, and manage folders natively.
π‘ First time? Run t3e with no arguments to explore the interactive demo sandbox.
Prefer direct binary tarball downloads? See manual options β
See how developers leverage t3e to build custom email automations and integrations.
Notify your team automatically when a build fails or a deployment completes. By passing the non-interactive --yes (or -y) flag and piping stdout or log files directly to stdin, you can easily integrate t3e with automated runners like GitHub Actions or GitLab CI.
# Send build logs only if build fails $ npm run build > build.log 2>&1 \ || t3e send \ --to alerts@company.com \ --subject "Build Failed" \ --yes < build.log
Schedule system backups, disk health checks, or database validations using cron, and receive direct reports in your inbox. No heavy setup or specialized tooling requiredβjust direct redirection of command output to t3e send.
# Send system disk usage report every night $ df -h | t3e send \ --to sysadmin@company.com \ --subject "Disk Space Alert: $(hostname)" \ --yes
Extract verification codes, one-time passwords, or specific alerts instantly without opening a browser or full GUI client. Standard output from t3e list and t3e read flows seamlessly into Unix filtering tools.
# Fetch latest OTP verification code $ t3e list --limit 5 \ | grep -i "gitlab.*verify" \ | head -n 1 \ | awk '{print $1}' \ | xargs t3e read \ | grep -oE "[0-9]{6}" \ | head -n 1
Combine t3e with the command-line fuzzy finder fzf to build an interactive, keyboard-driven inbox browser. Search through your subjects or senders, and read messages instantly in a live scrollable preview pane.
# Live preview (up to 100 emails) $ t3e list -l 100 \ | fzf --header-lines=4 \ --preview "t3e read {1}" \ --preview-window=right,60%,wrap # Select and read email $ t3e read $(t3e list -l 100 \ | fzf --header-lines=4 \ | awk '{print $1}')
Turn frequent email queries into fast, single-word keyboard shortcuts. Custom wrapper functions in your shell profile (e.g. .zshrc, .bashrc) make reading and checking emails faster than ever.
# Quick aliases for email triage alias check-unread="t3e list --unread-only" # Function latest-mail() { t3e list | head -n 5 | tail -n 1 | \ awk "{print \$1}" | xargs t3e read } # Function with $1=account $2=folder email-view() { # Usage: email-view [account] [folder] local a="${1:-demo}" local f="${2:-INBOX}" t3e -a "$a" list -f "$f" -l 100 \ | fzf --header-lines=4 \ --preview "t3e read {1} -a $a -f '$f'" \ --preview-window=right,60%,wrap }
Designed for integration, automation, and keyboard workflows.
Compiled natively with zero dependencies. Starts instantly, uses minimal RAM, and runs directly inside your shell without bloat.
Support for redirects and piping. Pipe build logs directly to email bodies or filter mailboxes using standard shell tools.
Configure multiple email accounts (e.g. personal, work) in a single TOML file and switch between them dynamically using the global account flag.
Improved confirmation prompt messaging when sending an email to make it more explicit that aborting (n) will automatically save the message as a draft, and fixed interactive attachment prompt behavior when options already specify attachments.
Non-blocking update notification UX and absolute path resolution for draft attachments.
Automated draft saving to TOML on abort, direct draft file sending (-d/--draft), interactive attachment wizard prompts, and SMTP-to-IMAP sent folder sync.
Added --json support for t3e folders subcommand to list mail folders programmatically.
Introducing automated version checking (24h cache, 48h rate-limited prompt cooldown) and interactive binary self-updating (t3e update).
Interactive feedback submission command (t3e feedback) with system diagnostic info collection and Google Form integration.
Linux ARM64 (aarch64) precompiled binary release build support in CI/CD pipeline and install.sh.
Markdown header (#) support in email draft bodies and refined fzf workflow documentation.
Native support for JSON formatted output (--json) when executing t3e list and t3e read subcommands.
Binary email attachment parsing and sending, merged interactive send prompt flow, and pipeline build optimizations.
Reply and Reply-all support with automated population of recipient addresses, subject lines, and email context.
Multi-recipient email handling with To, Cc, and Bcc header fields display during listing and composing.
Configurable socket connection timeouts, automatic paged reading using system pager, and HTML-to-text formatting.
Choose your preferred installation method: quick automated shell script or direct binary tarball extraction.
Automatically detects OS and CPU architecture, downloads the precompiled binary, and installs it into your system PATH.
Download precompiled release archives directly for offline, containerized, or custom directory installations (v0.3.4):
# 1. Extract archive $ tar -xzf t3e-linux-x86_64.tar.gz # 2. Move executable to your PATH $ sudo mv t3e /usr/local/bin/
Learn how to use t3e by walking through the zero-config demo mode commands.
Run t3e with no arguments to initialize the sandbox configuration and enter simulated demo mode.
Quickly list the emails inside your folder with their UID, status indicator, sender, subject, and date.
View the details and body text of a specific email using its UID.
Flag emails interactively (with prompt verification) or append --yes for non-interactive scripting.
Move an email to Trash by UID, verifying interactively or passing --yes for automation.
Display all available mail folders on your server and query a specific folder like Trash.