فایلها
`files.list`، `list_all`، `iterate`، `get`، `download`، `list_links`، `list_all_links`، `iterate_links`، `create_link`، `revoke_link`، `stats`، `upload`، `delete` و `delete_many`.
همهٔ متدها
from pathlib import Path from openemail import openemail page = openemail.files.list(kind='pdf', sort='largest')file = page['items'][0] Path(file['filename']).write_bytes(openemail.files.download(file['id'])) links = openemail.files.list_all_links(file['id'])print([(link['url'], link['downloads']) for link in links]) stats = openemail.files.stats()print(stats['totals']['files'], stats['uploaded']['bytes'])هر فایلی که صندوق پستی نگه میدارد، از پیوستهای فرستاده و دریافتشده تا فایلهایی که در آن بارگذاری شده، همان صفحهٔ فایلهای برنامه. download کل فایل را بهصورت bytes برمیگرداند، پیوندها همان پیوندهای دانلودیاند که یک فایل با آنها رفته، همراه با اینکه هرکدام چند بار گرفته شده، و stats همان زبانهٔ تحلیلها است.
list، list_all و iterate پارامترهای q، kind و sort را میگیرند، و همچنین direction (inbound، outbound یا uploaded)، address، یعنی فایلهای یک نشانی که بدون توجه به کوچکی و بزرگی حروف مقایسه میشود، و since و until، به شکل datetime یا رشتهٔ ISO 8601. since لحظهٔ خودش را در بر میگیرد و until پیش از آن میایستد.
خواندن به files:read نیاز دارد، و بارگذاری، حذف و انتشار یا لغو لینکها به files:write که files:read را هم در بر میگیرد. کلیدی که پیش از آنکه فایلها اسکوپهای خودشان را داشته باشند ساخته شده، اسکوپهای متناظر را گرفت. کلیدی که به نشانیها یا دامنههای خاصی محدود است فقط فایلهای همانها را میبیند.
لینکهای عمومی
from openemail import openemail uploads = openemail.files.list_all(direction='uploaded', since='2026-09-01') file = uploads[0] link = openemail.files.create_link(file['id'], domain='acme.com')print(link['url']) openemail.files.revoke_link(file['id'], link['id'])create_link یک فایل را در یک پیوند دانلود عمومی منتشر میکند که بدون ورود باز میشود و همان پیوند را برمیگرداند. پیوند روی میزبان فایلهای domain قرار میگیرد اگر آن دامنه چنین میزبانی داشته باشد، مثل files.acme.com، وگرنه روی میزبان فایلهای نشانیای که فایل به آن تعلق دارد، وگرنه روی نشانی API. فایلی که با یک پیام آمده یا رفته اول در فضای ذخیرهسازی عمومی کپی میشود، و برنامه یا اسکریپت با 422 file_unshareable رد میشود.
هر create_link پیوند تازهای میسازد، پس پس از گم شدن پاسخ هرگز دوباره تلاش نمیشود: اول پیوند را با list_links پیدا کنید. revoke_link یک پیوند را برای همیشه از کار میاندازد، از جمله در نامههایی که پیشتر رفتهاند، و آن را با revokedAt تنظیمشده برمیگرداند. دو بار لغو کردن بیخطر است، و پیوند ناشناخته یک 404 است.
بارگذاری و حذف
from pathlib import Path from openemail import openemail upload = openemail.files.upload( Path('price-list.pdf').read_bytes(), filename='price-list.pdf', content_type='application/pdf',) if upload['deletable']: openemail.files.delete(upload['id']) result = openemail.files.delete_many([ 'file_0c4e7a91d2b84f63a5e19b7d', 'file_6bb640f5b99e47deb758f1f5',])for kept in result['kept']: print(kept['filename'], kept['reason'])upload بایتها را همانطور که هستند، تا 100 MB، با نام filename ذخیره میکند و فایلی را برمیگرداند که یک ارسال شناسهاش را به شکل {'fileId': upload['id']} پیوست میکند. content_type را بدهید، وگرنه بایتها به شکل application/octet-stream ذخیره میشوند. هرگز دوباره تلاش نمیشود، چون تلاش دوم یک نسخهٔ دوم ذخیره میکرد.
فقط فایل بارگذاریشدهای که چیزی به آن وابسته نیست حذفشدنی است، و deletable و usage روی هر فایل این را از پیش میگویند. delete هر فایل دیگری را با یک 409 file_in_use رد میکند. delete_many تا 100 شناسه میگیرد، هر چه بتواند حذف میکند، و بقیه را در kept، هر کدام با دلیلش، و در missing گزارش میدهد.
upload یک bytes، bytearray یا memoryview میگیرد. دستکم 600 ثانیه منتظر پاسخ میماند، هر قدر هم timeout کلاینت کوتاه باشد، مگر اینکه timeout= را به فراخوانی بدهید، و یک filename خالی پیش از فرستادن هر چیزی ValueError را raise میکند.
مرجع
files.list()مرجع کاملfiles.list_all()مرجع کاملfiles.iterate()مرجع کاملfiles.get()مرجع کاملfiles.download()مرجع کاملfiles.list_links()مرجع کاملfiles.list_all_links()مرجع کاملfiles.iterate_links()مرجع کاملfiles.create_link()مرجع کاملfiles.revoke_link()مرجع کاملfiles.stats()مرجع کاملfiles.upload()مرجع کاملfiles.delete()مرجع کاملfiles.delete_many()مرجع کامل