پرش به مستندات
پایگاه دانش

انتقال از Mailgun

SDK مربوط به Mailgun را نگه دارید و از طریق OpenEmail بفرستید. نشانی پایهٔ URL و کلید آن را عوض کنید، و کد ارسال شما همان‌طور که هست می‌ماند.

چه چیزی را عوض کنید

SDK را به https://api.openemail.uk/compat/mailgun هدایت کنید و به‌جای کلید Mailgun یک کلید API از OpenEmail با مجوز emails:send به آن بدهید. کلید به‌عنوان گذرواژهٔ همان ورود HTTP Basic فرستاده می‌شود و نام کاربری بررسی نمی‌شود. دامنهٔ داخل مسیر باید یکی از دامنه‌های فضای کاری باشد، و نشانی From تعیین می‌کند که پیام می‌تواند برود یا نه، مثل همه‌جای OpenEmail.

import formData from 'form-data'import Mailgun from 'mailgun.js' const mailgun = new Mailgun(formData)const mg = mailgun.client({  username: 'api',  key: process.env.OPENEMAIL_API_KEY,  url: 'https://api.openemail.uk/compat/mailgun',}) await mg.messages.create('acme.com', {  from: 'Acme Billing <[email protected]>',  to: ['[email protected]'],  subject: 'Your invoice',  html: '<p>Your invoice is attached.</p>',})

در Ruby، آرگومان دوم میزبان و مسیر بدون طرح است. در PHP، SDK از نقطهٔ پایانی‌ای که به آن داده می‌شود فقط میزبان را نگه می‌دارد، پس مسیر از طریق AddPathPlugin از php-http اضافه می‌شود که SDK خودش آن را نصب می‌کند. بستهٔ رسمی Python ممکن است هشداری ثبت کند که میزبان مال Mailgun نیست، و با این حال می‌فرستد. همچنین درخواستی را که با 429 یا یک 5xx شکست خورده دوباره امتحان می‌کند، برای همین OpenEmail وقتی بخشی از یک دسته رفته باشد به‌جای 5xx با 400 پاسخ می‌دهد.

چه چیزی به چه چیزی نگاشت می‌شود

نقطهٔ پایانی‌ای که پاسخ داده می‌شود POST /v3/{domain}/messages است، به‌صورت multipart/form-data که پیوست‌ها به آن نیاز دارند، یا application/x-www-form-urlencoded. نام فیلدی که به [] ختم شود بدون آن خوانده می‌شود.

Mailgunدر OpenEmail
fromفرستنده، همراه با نامش.
toگیرنده‌ها، تکرارشده یا جداشده با ویرگول. همراه با cc و bcc، تا 50 برای هر پیام.
subjectموضوع.
htmlبدنهٔ HTML. text بدنهٔ متنی می‌شود، و یکی از این دو، یا template، لازم است.
attachmentفایل‌ها، حداکثر 20 عدد و روی هم 5 مگابایت.
inlineتصویری که HTML آن را با نام فایلش به‌صورت cid: به کار می‌برد، در همان جایی که آمده جاسازی می‌شود. هر فایل درون‌خطی دیگر به‌صورت پیوست معمولی می‌رسد.
o:tagبرچسب‌هایی با نام‌های tag، tag_2 و به همین ترتیب، که هر کدام یک برچسب را نگه می‌دارد.
v:هر متغیر با نام و مقدارش به یک برچسب تبدیل می‌شود. همراه با o:tag، حداکثر 10 برای هر پیام.
o:deliverytimeارسال زمان‌بندی‌شده، تا یک سال جلوتر. زمانی که گذشته باشد فوراً می‌فرستد.
o:trackingهمراه با o:tracking-clicks و o:tracking-opens، ردیابی را برای پیام روشن یا خاموش می‌کند. htmlonly روشن به حساب می‌آید.
o:testmodeyes پیام را بدون تحویل دادن، فرستاده‌شده ثبت می‌کند، همان‌طور که یک کلید oe_test_ این کار را می‌کند.
h:Reply-Toنشانی پاسخ. هر فیلد h: دیگر به یک سرآیند سفارشی تبدیل می‌شود: X-*، List-*، Precedence، Auto-Submitted، Importance، Priority و Feedback-ID.
recipient-variablesارسال دسته‌ای. هر نشانی در to پیام خودش را می‌گیرد، که در آن %recipient.key% از متغیرهایش و %recipient% با نشانی‌اش پر می‌شود، و cc و bcc روی هر کدام می‌آیند. جانگهداری که مقداری ندارد همان‌طور که هست می‌ماند.
templateslug یا شناسهٔ (tpl_...) یک قالب OpenEmail، که با t:variables و در غیر این صورت با h:X-Mailgun-Variables پر می‌شود. t:version نسخه‌ای را با شماره‌اش انتخاب می‌کند.

چه چیزی رد می‌شود و چرا

  • template همراه با html یا text، چون قالب OpenEmail کل بدنه را فراهم می‌کند، و t:version که شمارهٔ نسخه نباشد.
  • o:deliverytime-optimize-period و o:time-zone-localize، چون OpenEmail برای هر گیرنده زمان ارسال جداگانه‌ای انتخاب نمی‌کند. سرآیندهای دیگر h:X-Mailgun-، که دستورهایی برای Mailgun هستند: به‌جای آن‌ها گزینهٔ o: متناظر را به کار ببرید.
  • amp-html به‌تنهایی. در کنار html یا text کنار گذاشته می‌شود، چون آن‌ها خودشان پیام را می‌رسانند.
  • بیش از یک نشانی پاسخ، بیش از 10 برچسب، نام برچسبی که چیزی جز حرف، رقم، _ و - داشته باشد، و دسته‌ای با بیش از 100 گیرنده. Mailgun تا 1000 می‌پذیرد، پس دسته‌های بزرگ‌تر را تقسیم کنید.

o:dkim، o:require-tls، o:skip-verification، o:sending-ip، o:sending-ip-pool، o:tracking-pixel-location-top، o:archive-to، o:deliver-within و t:text پذیرفته می‌شوند و چیزی را تغییر نمی‌دهند.

پاسخ‌ها و خطاها

  • هر ارسال با 200 همراه با پیام Queued. Thank you. و یک id پاسخ می‌دهد: شناسهٔ پیام OpenEmail درون دو کروشهٔ زاویه‌ای، که GET /emails/{id} و وب‌هوک‌ها آن را بدون آن‌ها به کار می‌برند. ارسال دسته‌ای برای هر گیرنده یک پیام می‌سازد، هر کدام با شناسهٔ خودش، و با اولی پاسخ می‌دهد. سرآیند Idempotency-Key مثل بقیهٔ API کار می‌کند.
  • کلید ناموجود یا ناشناخته با 401 و متن سادهٔ Forbidden پاسخ می‌گیرد، و دامنه‌ای که فضای کاری ندارد با 404 و Domain not found. بقیهٔ موارد به‌صورت یک message برمی‌گردند: 400 برای پیامی که نمی‌شود فرستاد، 403 برای کلیدی بدون emails:send، نشانی From که کلید اجازهٔ استفاده از آن را ندارد، دامنه‌ای که هنوز نمی‌تواند بفرستد یا فضای کاری‌ای که سهمیهٔ ارسالش را تمام کرده است، و 413 برای بدنهٔ بیشتر از 25 مگابایت یا پیوست‌های بیشتر از 5 مگابایت.
  • اگر یک گیرندهٔ دسته بعد از پذیرفته شدن دیگران شکست بخورد، خطا پیام‌هایی را که فرستاده شده‌اند نام می‌برد و با 400 پاسخ می‌دهد، تا یک SDK که درخواست‌ها را دوباره می‌فرستد آن‌ها را دو بار نفرستد.