Belgelere geç
Bilgi bankası

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.

MailgunOpenEmail'de
fromGönderen, adıyla birlikte.
toTekrarlanan ya da virgülle ayrılan alıcılar. cc ve bcc ile birlikte ileti başına en fazla 50.
subjectKonu.
htmlHTML gövdesi. text metin gövdesi olur ve ikisinden biri ya da template zorunludur.
attachmentDosyalar, en fazla 20 ve toplam 5 MB.
inlineHTML'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:tagtag, 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:deliverytimePlanlı bir gönderim, bir yıla kadar ileri. Geçmişte kalmış bir zaman hemen gönderir.
o:trackingo: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:testmodeyes, bir oe_test_ anahtarının yaptığı gibi iletiyi teslim etmeden gönderilmiş olarak kaydeder.
h:Reply-ToYanıt adresi. Diğer her h: alanı özel bir başlık olur: X-*, List-*, Precedence, Auto-Submitted, Importance, Priority ve Feedback-ID.
recipient-variablesToplu 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.
templateBir 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

  • html ya da text ile birlikte bir template, çünkü bir OpenEmail şablonu gövdenin tamamını sağlar, ve sürüm numarası olmayan bir t:version.
  • o:deliverytime-optimize-period ve o:time-zone-localize, çünkü OpenEmail her alıcı için ayrı bir gönderim zamanı seçmez. Mailgun'a yönelik talimat olan diğer h:X-Mailgun- başlıkları: bunların yerine karşılık gelen o: seçeneğini kullanın.
  • Tek başına amp-html. html ya da text yanı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 bir id ile 200 yanıtı verir. id, açılı ayraçlar içindeki OpenEmail ileti kimliğidir ve GET /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-Key başlığı API'nin geri kalanındaki gibi çalışır.
  • Eksik ya da bilinmeyen bir anahtar düz metin Forbidden ile 401, çalışma alanında olmayan bir alan adı Domain not found ile 404 yanıtı alır. Diğer her şey bir message olarak döner: gönderilemeyen bir ileti için 400, emails:send izni 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.