Skip to content

Connect

Auto-discovery

The recommended way. Detects the IMAP server from your email domain automatically.

# Code above omitted 👆

    # Auto-discovery (recommended)
    with Email("user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")
        print(f"Mailboxes: {app.mailboxes()}")

# Code below omitted 👇
👀 Full file preview
"""Connect to an email server."""

from email_profile import Email


def main() -> None:

    # Auto-discovery (recommended)
    with Email("user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")
        print(f"Mailboxes: {app.mailboxes()}")

    # Explicit server
    with Email("imap.gmail.com", "user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")

    # From environment variables (.env)
    with Email.from_env() as app:
        print(f"Connected as {app.user}")


if __name__ == "__main__":
    main()

Supports 50+ providers including Gmail, Outlook, Yahoo, iCloud, Zoho, Hostinger, and more.

Explicit Server

Specify the IMAP server directly.

# Code above omitted 👆

    # Explicit server
    with Email("imap.gmail.com", "user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")

# Code below omitted 👇
👀 Full file preview
"""Connect to an email server."""

from email_profile import Email


def main() -> None:

    # Auto-discovery (recommended)
    with Email("user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")
        print(f"Mailboxes: {app.mailboxes()}")

    # Explicit server
    with Email("imap.gmail.com", "user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")

    # From environment variables (.env)
    with Email.from_env() as app:
        print(f"Connected as {app.user}")


if __name__ == "__main__":
    main()

From Environment Variables

Read credentials from .env or environment variables.

# Code above omitted 👆

    # From environment variables (.env)
    with Email.from_env() as app:
        print(f"Connected as {app.user}")

# Code below omitted 👇
👀 Full file preview
"""Connect to an email server."""

from email_profile import Email


def main() -> None:

    # Auto-discovery (recommended)
    with Email("user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")
        print(f"Mailboxes: {app.mailboxes()}")

    # Explicit server
    with Email("imap.gmail.com", "user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")

    # From environment variables (.env)
    with Email.from_env() as app:
        print(f"Connected as {app.user}")


if __name__ == "__main__":
    main()

Expected variables:

EMAIL_USERNAME=user@example.com
EMAIL_PASSWORD=app_password
EMAIL_SERVER=imap.example.com  # optional, auto-discovered

Full Code

"""Connect to an email server."""

from email_profile import Email


def main() -> None:

    # Auto-discovery (recommended)
    with Email("user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")
        print(f"Mailboxes: {app.mailboxes()}")

    # Explicit server
    with Email("imap.gmail.com", "user@gmail.com", "app_password") as app:
        print(f"Connected to {app.server}")

    # From environment variables (.env)
    with Email.from_env() as app:
        print(f"Connected as {app.user}")


if __name__ == "__main__":
    main()

Reference