Skip to main content

Crypted Mail

Crypted Mail is a Python library for encrypting text with a shared passphrase and sending the encrypted payload through Gmail from scripts or Jupyter notebooks.

Install

pip install crypted-mail

Quick Start

from crypted_mail import CryptedMailClient

client = CryptedMailClient()

# Run once to open the Google OAuth browser flow.
credentials_json = client.connect_gmail_oauth("client_secret.json")

payload = client.encrypt_with_passphrase(
    plaintext="hello secure world",
    passphrase="correct horse battery staple",
    sender_hint="alice@example.com",
    note="Use the passphrase we agreed on by phone.",
)

message_id = client.send_encrypted_email(
    sender="alice@example.com",
    recipient_email="bob@example.com",
    subject="Encrypted message",
    armored_payload=payload,
    credentials_or_token=credentials_json,
)

print(message_id)

Reuse Saved Credentials

from crypted_mail import CryptedMailClient

client = CryptedMailClient()

with open("gmail-token.json", "r", encoding="utf-8") as handle:
    credentials_json = handle.read()

plaintext = client.decrypt_with_passphrase(
    armored_text="cm1:...",
    passphrase="correct horse battery staple",
)

connect_gmail_oauth() returns serialized credentials JSON so you can store it wherever your notebook or script prefers.

Development

python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -U pip build twine
pip install -e .[dev]
pytest
python -m build
python -m twine check dist/*

Publish To PyPI

python -m twine upload --repository testpypi dist/*
python -m twine upload dist/*

After publishing, create a fresh virtual environment, install the package from PyPI, and run the Quick Start example as a smoke test.

Release files for crypted-mail 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crypted-mail 0.1.0
File Size Uploaded
crypted_mail-0.1.0.tar.gz 8.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for crypted-mail 0.1.0
File Interpreter ABI Platform
crypted_mail-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 16.6 kB

Release files / crypted_mail-0.1.0.tar.gz

Download URL crypted_mail-0.1.0.tar.gz
Size 8.6 kB
Tags Source
SHA-256 checksum
How to use checksums
fc741e9c166d9b745114337764798432d5d0b5b11a8d47a28c8e49d854bbb488
BLAKE2b-256 checksum
How to use checksums
ac09d31264f0639d9ec029f7698fae58f002cfa095787ae4d036655d6711bbea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / crypted_mail-0.1.0-py3-none-any.whl

Download URL crypted_mail-0.1.0-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bff61b901ee46409f813d22d2b38cf2dc81293b0983f74aa2a5eb6a6a0b724f1
BLAKE2b-256 checksum
How to use checksums
89d73ccf3cabde57d5fab48b35b4185d515374ef95893eeefbfc5faffea187c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page