Skip to content

Find large messages — messages over a specified size threshold.

Useful for mailbox cleanup and storage management. Sorted by size (descending) so the biggest offenders appear first.

Permissions

Requires delegated permission Mail.Read.

Reference

View source

from office365.graph_client import GraphClient
from tests.settings import client_id, password, tenant, username

client = GraphClient(tenant=tenant).with_username_and_password(client_id, username, password)

min_mb = int(input("Minimum size in MB (e.g. 5): ") or "5")
min_bytes = min_mb * 1024 * 1024

messages = (
    client.me.mail_folders["inbox"]
    .messages.filter(f"size ge {min_bytes}")
    .select(["subject", "from", "size", "receivedDateTime"])
    .order_by("size desc")
    .get()
    .execute_query()
)

print(f"\nMessages over {min_mb} MB in inbox ({len(messages)}):\n")
for m in messages:
    sender = m.from_recipient.emailAddress.address if m.from_recipient else ""
    size_mb = (m.size or 0) / (1024 * 1024)
    print(f"  {size_mb:6.1f} MB  {m.subject:40s}  {sender:30s}  {m.receivedDateTime}")

← Back to Messages