پرش به مستندات
Python

نصب

یک پکیج، سه وابستگی، Python 3.10 و بالاتر.

نصب

انتشار کنونی 0.0.1 است. برای هر متد TypeScript SDK یک متد دارد، با همان نام به شکل snake_case، و بررسی همخوانیِ پکیج هر جا یکی غایب باشد یا درخواست متفاوتی بفرستد بیلد را می‌شکند.

pip install openemail
send_email.py
import os from openemail import init, openemail init(os.environ['OPENEMAIL_API_KEY']) email = openemail.emails.send({    'from': 'Acme Billing <[email protected]>',    'to': '[email protected]',    'subject': 'Your September invoice',    'html': '<p>Invoice attached.</p>',}) print(email['id'], email['status'])

init کلاینت مشترک openemail را یک بار پیکربندی می‌کند و هر ماژولی که پس از آن openemail را import کند همان کلاینت را می‌گیرد. اگر از آن صرف‌نظر کنید، نخستین فراخوانی کلاینت را از OPENEMAIL_API_KEY می‌سازد.

بدنهٔ درخواست یک dict ساده با همان نام فیلدهای خودِ API است، پس from، replyTo و scheduledAt دقیقاً همان‌طور نوشته می‌شوند که در مرجع API، و پاسخ هم یک dict است. هر بدنه و پاسخ یک TypedDict در openemail.types دارد، پس ویرایشگرتان کلیدها را کامل می‌کند و بررسی‌کنندهٔ نوع کلیدی را که غلط نوشته شده می‌گیرد.

برگشتن send() به این معنا نیست که پیام رفته است. یک ارسال زمان‌بندی‌شده یا لغوپذیر با queued یا scheduled برمی‌گردد و بعداً تعیین تکلیف می‌شود. status را بخوانید، نه این واقعیت را که فراخوانی برگشت.

کجا اجرا می‌شود

Python 3.10 و تازه‌تر، با سه وابستگی: httpx برای HTTP، anyio برای کلاینت ناهمگام و typing-extensions برای تایپ‌ها. هر درخواست از httpx می‌گذرد، و می‌توانید httpx.Client خودتان، یا برای AsyncOpenEmail یک httpx.AsyncClient، را به آن بدهید.

OpenEmail به کار اسکریپت‌ها، workerها و برنامه‌های وب همگام می‌آید، و AsyncOpenEmail به کار یک حلقهٔ رویداد، روی asyncio یا trio. هر دو با همین متدها در همین یک پکیج عرضه می‌شوند.

یک کلاینت را می‌توان بی‌خطر میان threadها به اشتراک گذاشت، پس یک پردازهٔ worker فقط به یکی نیاز دارد. یک استخر اتصال نگه می‌دارد که close() یا پایان یک بلوک with آن را می‌بندد.

پکیج همراه با py.typed عرضه می‌شود و در حالت strict از mypy و pyright سربلند بیرون می‌آید، پس بررسی‌کنندهٔ نوع هر متد، بدنه و پاسخ را همان‌طور که نوشته شده می‌خواند.

کلاینت یک کلید API فضای کاری را با خود دارد که می‌تواند ایمیل بفرستد و صندوق پستی را بخواند، پس جایش روی سرور، در یک job یا در ابزاری است که روی دستگاه خودتان اجرا می‌شود. کلید را در یک متغیر محیطی یا یک مدیر secret نگه دارید، هرگز در کد.