ارسال با SMTP
همان ارسالِ POST /emails، برای نرمافزاری که با SMTP کار میکند.
اتصال
هر چیزی که از راه یک سرور SMTP ایمیل میفرستد میتواند از راه OpenEmail بفرستد: ارسالکنندهٔ ایمیلِ یک فریمورک، یک CMS، یک ابزار پایش، یک چاپگر. با نام کاربری openemail و یک کلید API بهعنوان گذرواژه وارد شوید. کلید به اسکوپ emails:send نیاز دارد، و پیامی که میسپارد همان ارسالی است که POST /emails با آن کلید انجام میدهد.
| تنظیم | مقدار |
|---|---|
| میزبان | smtp.openemail.uk |
| درگاه | 465 با SSL/TLS، یا 587 با STARTTLS |
| نام کاربری | openemail |
| گذرواژه | یک کلید API با اسکوپ emails:send |
| ورود | PLAIN یا LOGIN، که بیشتر نرمافزارها آن را گذرواژهٔ عادی مینامند |
هیچ چیز بدون رمزگذاری پذیرفته نمیشود، و روی درگاه 587 ورود فقط پس از STARTTLS باز میشود. کلید API فقط برای ارسال وارد میشود. خواندن صندوق پستی با IMAP یا POP3 به گذرواژهٔ برنامه نیاز دارد.
ارسال یک پیام آزمایشی
یک پیام را با نام message.eml ذخیره کنید و آن را با curl بسپارید. From باید نشانیای باشد که کلید اجازهٔ ارسال با آن را دارد.
From: Acme <[email protected]>To: [email protected]Subject: Hello over SMTPMessage-ID: <[email protected]> It works.curl --url "smtps://smtp.openemail.uk:465" \ --user "openemail:$OPENEMAIL_API_KEY" \ --mail-from "[email protected]" \ --mail-rcpt "[email protected]" \ --upload-file message.eml --crlfcurl --ssl-reqd --url "smtp://smtp.openemail.uk:587" \ --user "openemail:$OPENEMAIL_API_KEY" \ --mail-from "[email protected]" \ --mail-rcpt "[email protected]" \ --upload-file message.eml --crlfپاسخ به پیامِ پذیرفتهشده 250 2.0.0 OK queued as است و پس از آن شناسهاش میآید. این همان شناسهای است که GET /emails/{id} میگیرد، پس پیام، رویدادهایش و ردیابیاش مثل هر ارسال دیگری خوانده میشوند.
پیام چگونه به ارسال تبدیل میشود
پیام از همان راهی خوانده و فرستاده میشود که یک ارسال REST، پس دوباره از بخشهایش ساخته میشود و بایت به بایت عبور داده نمیشود.
| در پیام | در ارسال |
|---|---|
| From | from. الزامی است، و همان فرستندهای است که کلید در برابرش بررسی میشود. نشانیِ داخل MAIL FROM فقط باید وجود داشته باشد. |
| RCPT TO | کسانی که پیام به آنها تحویل میشود، حداکثر ۵۰ نفر. گیرندهای که در To آمده یک to است، آنکه در Cc آمده یک cc، و آنکه در هیچکدام نیامده یک bcc. دستکم یکی باید در To باشد. |
| Reply-To | replyTo، نخستین نشانی. |
| Subject | subject. |
| بخشهای متنی و HTML | text و html. تصویری که HTML آن را بهصورت cid: به کار میبرد، در همان جایی که آمده جاسازی میشود. |
| پیوستها | attachments: حداکثر ۲۰ فایل و روی هم ۵ مگابایت. |
| هدرهای دیگر | X-*، List-*، Precedence، Auto-Submitted، Importance، Priority و Feedback-ID نگه داشته میشوند. هر هدر دیگری کنار گذاشته میشود. |
| X-OpenEmail-Stream | stream: transactional یا broadcast. هدر پیش از خروج پیام برداشته میشود. |
آنچه اعمال میشود
هر چیزی که یک ارسال REST به آن پایبند است اینجا هم برقرار است، چون یک راه است.
- اسکوپهای کلید، و نشانیها و دامنههایی که به آنها محدود است.
- بررسی فرستنده:
Fromنشانیای روی دامنهای است که میتواند بفرستد، و نشانیای که کلید اجازهٔ ارسال با آن را دارد. - سهمیهٔ ارسال فضای کاری و فهرست توقیف آن.
- امضا و ردیابی بازشدن و کلیکِ نشانیای که پیام از آن فرستاده میشود، مثل یک ارسال REST که نه
signatureرا تنظیم میکند و نهtrackingرا. - مسیر: تا وقتی مسیر ارسالهای گروهی متوقف است، پیامی با
X-OpenEmail-Stream: broadcastرد میشود. - وبهوکها و رویدادهای تحویل، که پیام را با شناسهٔ داخل پاسخ
250نام میبرند.
تلاشهای دوباره
پیامی که Message-ID دارد یک بار فرستاده میشود. سپردن دوبارهٔ همان Message-ID برای همان گیرندهها با شناسهٔ پیام نخست پاسخ میگیرد و چیزی نمیفرستد، پس نرمافزاری که پس از قطع شدن اتصال دوباره تلاش میکند نمیتواند آن را دو بار بفرستد. همان پیام برای گیرندههای دیگر یک ارسال دیگر است. به ایدمپوتنسی نگاه کنید.
پاسخها و محدودیتها
| پاسخ | چه زمانی |
|---|---|
| 250 2.0.0 | پیام در صف قرار گرفته است و شناسهاش در ادامه میآید. |
| 535 5.7.8 | ورود ناموفق بود: کلیدی نادرست، باطلشده یا منقضیشده، کلیدی بدون emails:send، یا یک کلید API با نام کاربری دیگری. |
| 452 4.5.3 | بیش از ۵۰ گیرنده در یک پیام. نرمافزار ایمیل خودش بقیه را در پیام دیگری میفرستد. |
| 552 5.3.4 | پیام از ۲۵ مگابایت بزرگتر است. |
| 550 5.6.0 | پیام را نمیتوان به شکلی که نوشته شده فرستاد: From ندارد، کسی در To نیست، پیوستها بیش از حد زیاد یا بیش از حد بزرگاند، یا مسیر ناشناخته است. متن میگوید کدام. |
| 550 5.7.1 | ارسال رد شد: کلید اجازهٔ ارسال با آن نشانی را ندارد، دامنه هنوز نمیتواند بفرستد، یا مسیر ارسالهای گروهی متوقف است. |
| 452 4.7.0 | سهمیهٔ ارسال فضای کاری تمام شده است. |
| 451 4.7.1 | بیش از ۳۰۰ پیام از یک کلید در یک دقیقه. نرمافزار ایمیل صبر میکند و دوباره تلاش میکند. |
| 451 4.3.0 | خطایی در سمت ما. کمی بعد دوباره تلاش کنید. |
اتصالی که چیزی برای فرستادن ندارد پس از پنج دقیقه بسته میشود. یک اتصال میتواند هر تعداد پیام را یکی پس از دیگری ببرد.
در گزارش درخواستها
هر پیامی که یک کلید میسپارد یک سطر در گزارش درخواستهای آن است، با متد SMTP، مسیر /emails و وضعیتی که یک ارسال REST میداشت: 202 وقتی در صف قرار گرفته، و 403، 422 یا 429 با همان code خطا وقتی رد شده است. GET /keys/{id}/requests?path=/emails آنها را کنار ارسالهای REST فهرست میکند. ورودی که با یک کلید واقعی ناموفق باشد در فعالیت همان کلید دیده میشود.