Skip to content

Mailbox Operations

List Mailboxes

# Code above omitted 👆

        # List all mailboxes
        for name in app.mailboxes():
            print(f"  {name}")

# Code below omitted 👇
👀 Full file preview
"""Mailbox and folder operations."""

from email_profile import Email


def main() -> None:
    with Email.from_env() as app:
        # List all mailboxes
        for name in app.mailboxes():
            print(f"  {name}")

        # Access by name
        box = app.mailbox("INBOX")
        print(f"INBOX has {box.where().count()} emails")

        # Shortcuts
        print(f"Inbox: {app.inbox.name}")
        print(f"Sent: {app.sent.name}")
        print(f"Trash: {app.trash.name}")
        print(f"Drafts: {app.drafts.name}")
        print(f"Spam: {app.spam.name}")

        # Create a new mailbox
        # app.mailbox("INBOX.Archive").create()

        # Rename a mailbox
        # app.mailbox("INBOX.Old").rename_to("INBOX.Archive")

        # Delete a mailbox
        # app.mailbox("INBOX.Temp").delete_mailbox()


if __name__ == "__main__":
    main()

Access by Name

# Code above omitted 👆

        # Access by name
        box = app.mailbox("INBOX")
        print(f"INBOX has {box.where().count()} emails")

# Code below omitted 👇
👀 Full file preview
"""Mailbox and folder operations."""

from email_profile import Email


def main() -> None:
    with Email.from_env() as app:
        # List all mailboxes
        for name in app.mailboxes():
            print(f"  {name}")

        # Access by name
        box = app.mailbox("INBOX")
        print(f"INBOX has {box.where().count()} emails")

        # Shortcuts
        print(f"Inbox: {app.inbox.name}")
        print(f"Sent: {app.sent.name}")
        print(f"Trash: {app.trash.name}")
        print(f"Drafts: {app.drafts.name}")
        print(f"Spam: {app.spam.name}")

        # Create a new mailbox
        # app.mailbox("INBOX.Archive").create()

        # Rename a mailbox
        # app.mailbox("INBOX.Old").rename_to("INBOX.Archive")

        # Delete a mailbox
        # app.mailbox("INBOX.Temp").delete_mailbox()


if __name__ == "__main__":
    main()

Shortcuts

# Code above omitted 👆

        # Shortcuts
        print(f"Inbox: {app.inbox.name}")
        print(f"Sent: {app.sent.name}")
        print(f"Trash: {app.trash.name}")
        print(f"Drafts: {app.drafts.name}")
        print(f"Spam: {app.spam.name}")

# Code below omitted 👇
👀 Full file preview
"""Mailbox and folder operations."""

from email_profile import Email


def main() -> None:
    with Email.from_env() as app:
        # List all mailboxes
        for name in app.mailboxes():
            print(f"  {name}")

        # Access by name
        box = app.mailbox("INBOX")
        print(f"INBOX has {box.where().count()} emails")

        # Shortcuts
        print(f"Inbox: {app.inbox.name}")
        print(f"Sent: {app.sent.name}")
        print(f"Trash: {app.trash.name}")
        print(f"Drafts: {app.drafts.name}")
        print(f"Spam: {app.spam.name}")

        # Create a new mailbox
        # app.mailbox("INBOX.Archive").create()

        # Rename a mailbox
        # app.mailbox("INBOX.Old").rename_to("INBOX.Archive")

        # Delete a mailbox
        # app.mailbox("INBOX.Temp").delete_mailbox()


if __name__ == "__main__":
    main()

Message Operations

# Code above omitted 👆

            return

        uid = uids[0]

        # Mark as read
        inbox.mark_seen(uid)

        # Mark as unread
        inbox.mark_unseen(uid)

        # Flag / unflag
        inbox.flag(uid)
        inbox.unflag(uid)

        # Copy to another mailbox
        inbox.copy(uid, "INBOX.Archive")

        # Move to another mailbox
        inbox.move(uid, "INBOX.Archive")

        # Delete (marks as \Deleted)
        inbox.delete(uid)

# Code below omitted 👇
👀 Full file preview
"""Message operations: mark, delete, move, copy."""

from email_profile import Email


def main() -> None:
    with Email.from_env() as app:
        inbox = app.inbox

        # Get first email UID
        uids = inbox.where().uids()
        if not uids:
            print("No emails")
            return

        uid = uids[0]

        # Mark as read
        inbox.mark_seen(uid)

        # Mark as unread
        inbox.mark_unseen(uid)

        # Flag / unflag
        inbox.flag(uid)
        inbox.unflag(uid)

        # Copy to another mailbox
        inbox.copy(uid, "INBOX.Archive")

        # Move to another mailbox
        inbox.move(uid, "INBOX.Archive")

        # Delete (marks as \Deleted)
        inbox.delete(uid)

        # Delete and expunge immediately
        inbox.delete(uid, expunge=True)

        # Expunge all deleted
        inbox.expunge()


if __name__ == "__main__":
    main()

Full Code

"""Mailbox and folder operations."""

from email_profile import Email


def main() -> None:
    with Email.from_env() as app:
        # List all mailboxes
        for name in app.mailboxes():
            print(f"  {name}")

        # Access by name
        box = app.mailbox("INBOX")
        print(f"INBOX has {box.where().count()} emails")

        # Shortcuts
        print(f"Inbox: {app.inbox.name}")
        print(f"Sent: {app.sent.name}")
        print(f"Trash: {app.trash.name}")
        print(f"Drafts: {app.drafts.name}")
        print(f"Spam: {app.spam.name}")

        # Create a new mailbox
        # app.mailbox("INBOX.Archive").create()

        # Rename a mailbox
        # app.mailbox("INBOX.Old").rename_to("INBOX.Archive")

        # Delete a mailbox
        # app.mailbox("INBOX.Temp").delete_mailbox()


if __name__ == "__main__":
    main()

Reference