Skip to main content

YIYIMail Logo

YIYIMail 🚀

中文说明 | English Version

YIYIMail is a high-performance, modern Python library for email processing. It is designed to replace legacy libraries by providing seamless support for IMAP, POP3, and SMTP, featuring high-performance server-side search, elegant HTML/CID parsing, and extreme ease of use.

🌟 Key Features

  • Modern Protocol Support: Full support for IMAP, POP3, and SMTP. Auto-identification for personal (Gmail, Outlook, 163, QQ) and Enterprise providers (Tencent, Ali, Netease).
  • High-Performance Search: Leverage IMAP server-side search to locate emails instantly. Filter by Subject, Sender, Date, and Unseen status with limit support.
  • Superior Compatibility: Built-in IMAP ID command support to pass security checks of providers like 163.com and Tencent.
  • Smart Folder Matching: Automatically handles Modified UTF-7 encoding for non-ASCII folder names. Supports direct use of localized names like "已发送" or "Sent Messages".
  • Elegant Parser: Automatically handles CID inline images and generates Base64-rendered HTML for perfect offline viewing.
  • Utility Toolbox: Built-in show() for pretty printing and save()/load() for local persistence.
  • Type Safe: Fully typed with Python 3.7+ type hints.

📦 Installation

pip install YIYIMail

🚀 Quick Start

1. Connection

YIYIMail automatically identifies server settings based on your email domain.

import YIYIMail

# Use authorization codes for services like 163, QQ, etc.
mail = YIYIMail.connect('your_name@163.com', 'your_auth_code')

# Enterprise mail support (Auto-detects Tencent, Ali, Netease)
# mail = YIYIMail.connect('admin@exmail.qq.com', 'password')

# Or manual server configuration
# mail = YIYIMail.connect('user@company.com', 'pwd', smtp_host='smtp.company.com', imap_host='imap.company.com')

2. Send Emails

Supports multiple recipients, attachments, and HTML content.

mail.send(
    recipients=['friend@example.com'],
    subject='Hello',
    content='This is a test email',
    html='<h1>Hello</h1><p>Sent via YIYIMail!</p>',
    attachments=['/path/to/report.pdf']
)

3. Advanced Search (IMAP)

Search on the server without downloading everything.

# Search for emails after May 1st, 2026, limit to 5 latest results
results = mail.search(after='2026-05-01', subject='Report', limit=5)

# Search for unseen emails from a specific sender
unread = mail.search(sender='boss@company.com', unseen=True)

# Search in a specific folder
sent = mail.search(subject='Project', folder='Sent Messages')

4. Fetch & Display

# Get the latest email
latest = mail.fetch_latest()

# Get a range of emails
mails = mail.fetch_mails(start=1, end=10)

# Pretty print content to console
YIYIMail.show(latest)

5. Status Management

uid = latest['uid']
mail.mark_as_read(uid)    # Mark as seen
mail.mark_as_unread(uid)  # Mark as unseen

6. Persistence

# Save to local JSON
YIYIMail.save(latest, 'my_mail.json')

# Load from local
local_mail = YIYIMail.load('my_mail.json')

7. Mailbox Information

# Get mailbox statistics (total count, size)
stats = mail.info()
print(f"Total Mails: {stats['count']}, Size: {stats['size_bytes']} bytes")

🛠️ Folder Management

Use mail.folders() to get decoded folder names from the server.

print(mail.folders()) 
# Output: ['INBOX', 'Drafts', 'Sent Messages', 'Trash', ...]

⚖️ License

MIT License

Metadata

Release files for YIYIMail 1.0.3

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

Source distribution (sdist)

Source distribution for YIYIMail 1.0.3
File Size Uploaded
yiyimail-1.0.3.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for YIYIMail 1.0.3
File Interpreter ABI Platform
yiyimail-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 23.3 kB

Release files / yiyimail-1.0.3.tar.gz

Download URL yiyimail-1.0.3.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
e8085de47046d4ef96f2254e0cb4bab4d87ee74421410aadd4eb008e1bd4486e
BLAKE2b-256 checksum
How to use checksums
b78bbfc9a27a8e9501ab894d6386e98ddc62bd8762e2d9ab55f89eb87a2f7178
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / yiyimail-1.0.3-py3-none-any.whl

Download URL yiyimail-1.0.3-py3-none-any.whl
Size 12.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
69e0607728312be838bcdbb8fd7f3f712877ee970b5639c60c064035e121e556
BLAKE2b-256 checksum
How to use checksums
90fd55905fb63b7a06cef29b9517d3feaff7df9948d17515073631e76fc2c65f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

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