Skip to main content

Multi-account Fastmail CLI

Reason this release was yanked:

wrong number

Project description

fmcli

Multi-account Fastmail CLI for email, calendar, contacts, and files.

Features

  • Email: list, search, read, send, reply
  • Mailbox: list, move, mark-read/spam
  • Masked Email: list, create, delete
  • Calendar: list events, create, delete
  • Contacts: list, search, create, delete
  • Files/Drive: list, download, upload, delete
  • Multi-account: configure multiple Fastmail accounts, switch with --account

Installation

git clone https://github.com/sussdorff/fmcli
cd fmcli
uv sync

Configuration

Create ~/.config/fmcli/config.toml:

[[accounts]]
name = "personal"
email = "user@fastmail.com"
token = "your-api-token"

[[accounts]]
name = "work"
email = "user@company.com"
token = "your-api-token"
app_password = "your-app-password"  # required for CalDAV/CardDAV/WebDAV

Get your API token from Fastmail Settings → Privacy & Security → API Tokens.

The app_password is only needed for calendar, contacts, and files commands. Create one at Fastmail Settings → Privacy & Security → App Passwords.

Select account:

  • --account <name> flag on any command
  • FMC_ACCOUNT=work fmcli email list
  • Default: first account in config file

Usage

# Account management
fmcli account list
fmcli account show personal

# Email
fmcli email list
fmcli email list --account work --limit 50
fmcli email search "invoice"
fmcli email read <email-id>
fmcli email send --to recipient@example.com --subject "Hello" --body "Hi there"
fmcli email reply <email-id> --body "Thanks!"

# Mailbox
fmcli mailbox list
fmcli mailbox move <email-id> <mailbox-id>
fmcli mailbox mark-read <email-id>
fmcli mailbox mark-read <email-id> --unread
fmcli mailbox mark-spam <email-id>

# Masked Email
fmcli masked-email list
fmcli masked-email create --for-domain shop.example.com --description "Online shopping"
fmcli masked-email delete <masked-email-id>

# Calendar
fmcli calendar list
fmcli calendar list --days 7
fmcli calendar create --title "Team meeting" --start 2024-02-01T10:00:00 --end 2024-02-01T11:00:00
fmcli calendar delete <event-uid>

# Contacts
fmcli contacts list
fmcli contacts search "Alice"
fmcli contacts create --name "Alice Smith" --email alice@example.com --phone "+1234567890"
fmcli contacts delete <contact-uid>

# Files/Drive
fmcli files list
fmcli files list --path /Documents
fmcli files download /report.pdf ./report.pdf
fmcli files upload ./local.txt /remote.txt
fmcli files delete /old-file.txt

Shell Completions

fmcli --install-completion

Development

uv sync
uv run pytest
uv run pytest --cov=fmcli --cov-report=term-missing

Stack

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fmcli-20260225.160743.tar.gz (101.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fmcli-20260225.160743-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file fmcli-20260225.160743.tar.gz.

File metadata

  • Download URL: fmcli-20260225.160743.tar.gz
  • Upload date:
  • Size: 101.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fmcli-20260225.160743.tar.gz
Algorithm Hash digest
SHA256 5cf8f5b97fd3d0a21b4a464e552d249e3d0184008edb6594563b3223fdb402c5
MD5 a8ef052036d0e5c1d2ef3ea5b2dd1b0e
BLAKE2b-256 54023bf1e105b928e38b86275b2008469a8418fa1a3a7304be281a8f0a580eb9

See more details on using hashes here.

File details

Details for the file fmcli-20260225.160743-py3-none-any.whl.

File metadata

  • Download URL: fmcli-20260225.160743-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fmcli-20260225.160743-py3-none-any.whl
Algorithm Hash digest
SHA256 7f7ea4573c0ff0367e2a4cca291c3d518fb27635df4f4e938032bb582608c06c
MD5 799710c2d181029766a2a8cf4adcd2c0
BLAKE2b-256 64dcccfaeac0a41bf9c7d6036d13967e07dc5546caaae6ecb67fab61d6e0e146

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page