Mailgun'dan taşının
Mailgun SDK'sını koruyun ve OpenEmail üzerinden gönderin. Temel URL'sini ve anahtarını değiştirin, gönderim kodunuz olduğu gibi kalır.
Neyi değiştirmeli
SDK'yı https://api.openemail.uk/compat/mailgun adresine yönlendirin ve ona Mailgun anahtarı yerine emails:send iznine sahip bir OpenEmail API anahtarı verin. Anahtar aynı HTTP Basic girişinin parolası olarak gider ve kullanıcı adı denetlenmez. Yoldaki alan adı çalışma alanının alan adlarından biri olmalıdır ve bir iletinin çıkıp çıkamayacağına, OpenEmail'in her yerinde olduğu gibi From adresi karar verir.
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'de ikinci argüman, şema olmadan host ile yoldur. PHP'de SDK, kendisine verilen uç noktadan yalnızca host'u kullanır; bu yüzden yol, SDK'nın zaten kurduğu php-http paketindeki AddPathPlugin ile eklenir. Resmi Python paketi, host'un Mailgun'a ait olmadığına dair bir uyarı kaydedebilir ve yine de gönderir. Ayrıca 429 ya da bir 5xx ile başarısız olan isteği yeniden dener, bu yüzden toplu gönderimin bir kısmı çıktıktan sonra OpenEmail 5xx yerine 400 ile yanıt verir.
Ne neye karşılık gelir
Sunulan uç nokta POST /v3/{domain}/messages, eklerin gerektirdiği multipart/form-data ya da application/x-www-form-urlencoded olarak. [] ile biten bir alan ismi bu son ek olmadan okunur.
| Mailgun | OpenEmail'de |
|---|---|
| from | Gönderen, adıyla birlikte. |
| to | Tekrarlanan ya da virgülle ayrılan alıcılar. cc ve bcc ile birlikte ileti başına en fazla 50. |
| subject | Konu. |
| html | HTML gövdesi. text metin gövdesi olur ve ikisinden biri ya da template zorunludur. |
| attachment | Dosyalar, en fazla 20 ve toplam 5 MB. |
| inline | HTML'in dosya adıyla cid: olarak kullandığı görsel, göründüğü yere gömülür. Diğer satır içi dosyalar sıradan ek olarak gelir. |
| o:tag | tag, tag_2 ve devamı adlı etiketler, her biri bir etiket tutar. |
| v: | Her değişken, adı ve değeriyle bir etiket olur. o:tag ile birlikte ileti başına en fazla 10. |
| o:deliverytime | Planlı bir gönderim, bir yıla kadar ileri. Geçmişte kalmış bir zaman hemen gönderir. |
| o:tracking | o:tracking-clicks ve o:tracking-opens ile birlikte ileti için takibi açar ya da kapatır. htmlonly açık sayılır. |
| o:testmode | yes, bir oe_test_ anahtarının yaptığı gibi iletiyi teslim etmeden gönderilmiş olarak kaydeder. |
| h:Reply-To | Yanıt adresi. Diğer her h: alanı özel bir başlık olur: X-*, List-*, Precedence, Auto-Submitted, Importance, Priority ve Feedback-ID. |
| recipient-variables | Toplu gönderim. Her to adresi kendi iletisini alır, %recipient.key% onun değişkenlerinden, %recipient% ise adresiyle doldurulur, cc ve bcc de her birine eklenir. Değeri olmayan yer tutucu olduğu gibi kalır. |
| template | Bir OpenEmail şablonunun slug'ı ya da kimliği (tpl_...), t:variables ile, yoksa h:X-Mailgun-Variables ile doldurulur. t:version bir sürümü numarasıyla seçer. |
Neler reddedilir ve neden
htmlya datextile birlikte birtemplate, çünkü bir OpenEmail şablonu gövdenin tamamını sağlar, ve sürüm numarası olmayan birt:version.o:deliverytime-optimize-periodveo:time-zone-localize, çünkü OpenEmail her alıcı için ayrı bir gönderim zamanı seçmez. Mailgun'a yönelik talimat olan diğerh:X-Mailgun-başlıkları: bunların yerine karşılık geleno:seçeneğini kullanın.- Tek başına
amp-html.htmlya datextyanında dışarıda bırakılır, çünkü iletiyi onlar zaten taşır. - Birden fazla yanıt adresi, 10'dan fazla etiket, harf, rakam,
_ve-dışında karakter içeren bir etiket adı ve 100'den fazla alıcılı bir toplu gönderim. Mailgun 1.000 kabul eder, bu yüzden daha büyük toplu gönderimleri bölün.
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 ve t:text kabul edilir ve hiçbir şeyi değiştirmez.
Yanıtlar ve hatalar
- Bir gönderim
Queued. Thank you.iletisi ve biridile 200 yanıtı verir.id, açılı ayraçlar içindeki OpenEmail ileti kimliğidir veGET /emails/{id}ile webhook'lar onu ayraçsız kullanır. Toplu gönderim alıcı başına bir ileti oluşturur, her birinin kendi kimliği olur, ve ilkiyle yanıt verir.Idempotency-Keybaşlığı API'nin geri kalanındaki gibi çalışır. - Eksik ya da bilinmeyen bir anahtar düz metin
Forbiddenile 401, çalışma alanında olmayan bir alan adıDomain not foundile 404 yanıtı alır. Diğer her şey birmessageolarak döner: gönderilemeyen bir ileti için 400,emails:sendizni olmayan bir anahtar, anahtarın kullanamadığı bir From adresi, henüz gönderemeyen bir alan adı ya da gönderim kotasını tüketmiş bir çalışma alanı için 403 ve 25 MB'ı aşan bir gövde ya da 5 MB'ı aşan ekler için 413. - Toplu gönderimde diğerleri kabul edildikten sonra bir alıcı başarısız olursa hata, zaten gönderilen iletileri belirtir ve 400 ile yanıt verir, böylece istekleri yeniden deneyen bir SDK onları iki kez göndermez.