SDK
Toplu gönderim
`emails.sendBatch`: en fazla 100 mesaj, öğe başına sonuç.
emails.sendBatch
const result = await openemail.emails.sendBatch(invoices.map(toMessage)) console.log(result.sent, 'sent,', result.failed, 'failed') for (const item of result.items) { if (item.status === 'error') console.error(item.index, item.error.code, item.error.message) else console.log(item.index, item.email.id)}items, her girdi için sırayla bir kayıt tutar; her biri ya mesajıyla birlikte ok ya da o mesajın reddedileceği zarfla birlikte error olur. Hiçbir şey geri alınmaz; dolayısıyla failed > 0, toplu isteği yeniden göndermek için bir gerekçe değil, üzerinde işlem yapılacak bir listedir.
Tek bir idempotency anahtarı tüm toplu isteği kapsar ve sunucu onu öğe başına genişletir; böylece yeniden denenen bir toplu istek, mesajları ilkine indirgemek yerine her birini yeniden oynatır.
Parametreler: emails.sendBatch
emailsEmailSend[]zorunlu- Bir ila 100 mesaj; `{ "emails": [...] }` olarak serileştirilir ve verilen sırayla tek tek kabul edilir. Boş bir dizi, 100'den fazla öğe veya `translate` taşıyan 10'dan fazla öğe, çağrının tamamını `emails` üzerinde bir `validation_error` ile reddeder. Eksik bir `emails:send` kapsamı, dizi ya da `{ emails: [...] }` olmayan bir gövde ve bozuk bir `Idempotency-Key` da aynı şekilde reddedilir; hepsi tek bir mesaj bile gönderilmeden önce.
options.idempotencyKeystring- Toplu isteği süreçler arasında yinelenmeye karşı korur. İstemci her çağrıda yeni üretilmiş bir anahtar eklediği için kendi yeniden denemeleri asla çift gönderim yapmaz; sunucu da aldığı anahtarı öğe başına `key/0`, `key/1` biçiminde, sizin anahtarınızda bulunamayacak bir karakter olan eğik çizgiyle ayırarak genişletir; böylece yüz mesaj üzerindeki tek bir anahtar onları ilkine indirgeyemez.
emails[].fromRecipientInputzorunlu- Gönderen; çıplak bir adres, `Name <addr@host>` veya bir nesne olarak. Yedek gönderen yoktur ve anahtarın bu adrese izni olmalıdır; bir ret yalnızca o öğeyi başarısız kılar ve `from_address_forbidden` koduyla bir `permission_error` olur.
emails[].toRecipientInput | RecipientInput[]zorunlu- En az bir alıcı; tek bir alıcı istemci tarafından diziye sarılır. `to`, `cc` ve `bcc` toplamında en fazla 50 adres; toplu istek genelinde değil mesaj başına sayılır.
emails[].ccRecipientInput | RecipientInput[]- Varsayılan olarak yoktur ve `to` ile `bcc` ile aynı 50 adreslik toplama sayılır.
emails[].bccRecipientInput | RecipientInput[]- Varsayılan olarak yoktur ve aynı 50 adreslik toplama sayılır. `Bcc`, `headers` içinde ayarlanamayan adlardan biridir; dolayısıyla gizli kopya göndermenin tek yolu budur. Başlık biçimi, adresi gizli tutan alıcı başına zarfı bozardı.
emails[].replyToRecipientInput- Yanıtların gideceği yer. `headers` işlendikten sonra uygulanır; dolayısıyla orada da ayarladığınız bir `Reply-To` başlığına ikincisini eklemek yerine onun üzerine yazar.
emails[].subjectstring- En fazla 998 karakter, RFC 5322 satır sınırı; varsayılanı boş dizgedir. Boş bir konu, `template` bir konu sağlıyorsa şablonun kendi konusuna düşer.
emails[].htmlstring- HTML parça, en fazla bir milyon karakter; iki gövde de verildiğinde alıcıların gördüğü parçadır. `html`, `text`, `template` veya `draftId` alanlarından biri zorunludur ve hiçbirini taşımayan bir öğe `html` üzerinde `validation_error` ile başarısız olur.
emails[].textstring- Düz metin parça, en fazla bir milyon karakter. İkisi birden gönderilebilir; bu yoldaki her taşıma katmanı tek bir dizgeden tek bir gövde kurar, dolayısıyla `html` varsa o kazanır.
emails[].headersRecord<string, string>- Yalnızca `X-*`, `List-*`, Reply-To, Precedence, Auto-Submitted, Importance, Priority ve Feedback-ID; taşıma katmanının kendi ayarladığı her şey (From, To, Bcc, Subject, Message-ID, DKIM ve ARC başlıkları) sessizce düşürülmek yerine `reserved_header` olarak reddedilir. Değerler en fazla 998 karakterdir ve CR, LF veya NUL taşıyamaz, çünkü ikinci bir satır ikinci bir başlık demektir.
emails[].attachmentsAttachmentInput[]- Mesaj başına en fazla 20 dosya; satır içi dosyalar çözüldükten sonra toplam 5 MB olmak üzere, toplu istek başına değil mesaj başına sayılır. `content` ağ üzerinde base64'tür; bayt geçirirseniz istemci kodlar ve elle yazılmış base64'ün çağrı yığınını düzenli olarak patlattığı tek yer de burasıdır. Bir `{ fileId }` girdisi, çalışma alanında zaten bulunan bir dosyayı gösterir ve satır içi üst sınıra sayılmaz.
emails[].threadIdstring- Var olan bir konuşma dizisine yanıt verir, en fazla 256 karakter. Taşıma katmanı In-Reply-To ve References başlıklarını bundan yazar; yanıtın konuşmanın yanına değil içine düşmesini sağlayan şey budur.
emails[].draftIdstring- Kaydedilmiş bir taslağın içeriğini bu zarf altında gönderir, en fazla 256 karakter. Ağ üzerinde giden şey burada kurulan alıcılar, konu ve başlıklardır.
emails[].template{ id, version?, props?, slots? }- Saklanan bir şablonu sunucu tarafında, id (`tpl_…`) veya slug ile işler; `version` bir revizyonu sabitler, `props`/`slots` ise onu doldurur. Öğe kabul edildiğinde bir kez çözümlenir ve hem `html`/`text` ile hem de `draftId` ile birlikte kullanılamaz, çünkü bunların her biri mesajın ne içerdiğine verilen ikinci bir yanıttır.
emails[].scheduledAtDate | string- Bir `Date`, bir ISO-8601 anı veya `PT1H` gibi bir süre; en az bir saniye ileride ve en fazla 365 gün sonrası. Öğeler birbirinden bağımsız zamanlanır; dolayısıyla tek bir toplu istek yüz farklı gönderim zamanı taşıyabilir.
emails[].cancellableForSecondsnumber- Anlık bir gönderimde saniye cinsinden geri alma penceresi; 0 ile 900 arasında bir integer, varsayılan 0. 0'ın üzerindeki her değer aynı öğedeki `scheduledAt` ile birlikte reddedilir, çünkü zamanlanmış bir mesaj gidene kadar zaten iptal edilebilir.
emails[].trackingTrackingRequest- `opens` ve `clicks`; her biri bağımsız olarak isteğe bağlıdır ve her biri yalnızca bu mesaj için ayarı geçersiz kılar. Belirtmediğiniz bir anahtar, mesajın gönderildiği adresin ayarına, o da yoksa Tüm adresler ayarına düşer; bu ayar da bunlardan biri kapatmadıkça açıktır.
emails[].tagsRecord<string, string>- En fazla 10 etiket; anahtarlar `A-Za-z0-9_-` karakterlerinden 1 ila 64 karakter, değerler en fazla 256 karakter. Mesajda aynen geri döndürülür ve asla yorumlanmaz: `emails.list` yalnızca `status`, `from`, `limit` ve `cursor` alır; dolayısıyla bir etiket, mesaj bulmanın bir yolu değil, elinizdeki bir mesajdan okuyacağınız bir şeydir.
emails[].translateSendTranslateOptions- Bu öğeyi başka bir dilde gönderir; kabul anında çözümlenir, böylece onaylanan sözcükler giden sözcüklerin ta kendisi olur. Tek bir toplu istekte en fazla 10 öğe bunu taşıyabilir: her biri birkaç model çağrısı harcar ve öğeler sırayla işlenir, bu yüzden daha büyük bir toplu istek gönderimin ortasında kesilirdi. Bunun üzerinde çağrının tamamı, hiçbir şey gönderilmeden önce `emails` üzerinde `too_many_items` olarak reddedilir.
Yanıt: BatchResultResource
itemsBatchItemResource[]- Gönderdiğiniz sırayla, girdi başına bir kayıt. Hiçbir şey geri alınmaz; dolayısıyla bu, bir işlem raporu değil her mesaja ne olduğunun kaydıdır. API; mesajların hepsi, bir kısmı veya hiçbiri kabul edilmiş olsun 207 döndürür, bu yüzden promise her durumda çözülür ve dallanılacak şey öğe başına gelen `status` değeridir.
sentnumber- Kaç öğenin KABUL EDİLDİĞİ; bu, kaç tanesinin gittiğiyle aynı şey değildir. Bir öğe `ok` olup yine de `failed` veya `partial` bir `email.status` taşıyabilir, çünkü satır oluştuktan sonra mesajı reddeden bir taşıma katmanı, reddedilmiş bir istek değil bir teslimat sonucudur.
failednumber- Kaç kaydın `error` taşıdığı. `failed > 0`, toplu isteği yeniden göndermek için bir gerekçe değil, üzerinde işlem yapılacak bir listedir. Kabul edilen mesajlar çoktan gitmiştir.
items[].indexnumber- Bu kaydın mesajının, gönderdiğiniz dizideki konumu. Sıranın yanı sıra bir alan olarak da taşınır; böylece `items` dizisini filtreleyen veya sıralayan kod yine de hangi girdinin başarısız olduğunu söyleyebilir.
items[].status'ok' | 'error'- Birleşim tipinin ayırt edicisi: `ok` kayıtları `email`, `error` kayıtları `error` taşır; hiçbir kayıt ikisini birden taşımaz.
items[].emailSentEmailResource- Kabul edilen mesaj; yalnızca `ok` kayıtlarında ve tek bir gönderimin döndürdüğü biçimde. Hiç `tracking` anahtarı taşımaz, çünkü etkileşim daha sonra bildirilir ve kabul anında bildirilecek bir şey yoktur.
items[].email.replayedboolean- Türetilen `Idempotency-Key`, zaten var olan bir gönderimle eşleştiğinde true olur; yani yeni bir şey gönderilmemiştir ve bu, özgün mesajdır.
items[].error{ type: string; code: string; message: string; param?: string }- Bu tek mesajın neden reddedildiği; yalnızca `error` kayıtlarında. API'nin hata zarfının `docUrl` ve `requestId` çıkarılmış hâlidir: bunlar isteği tanımlar ve istek bir bütün olarak başarılı olmuştur.
items[].error.typestring- İstemcinin üzerinden dallanabileceği kategori: `validation_error`, `permission_error`, `not_found_error`, `conflict_error` ve diğerleri. Bu küme donmuştur ve `code` alanının aksine büyümeyecektir.
items[].error.codestring- Belirli hata: `from_address_forbidden`, `invalid_email_address`, `too_many_recipients`, `reserved_header`, `message_too_large`, `unknown_parameter`. Açık ve eklemelidir; bu yüzden tanımadığınız bir kodu `type` değeri gibi ele alın.
items[].error.messagestring- Bir insan için yazılmış tek cümle; varsa sorunlu değeri adıyla belirtir. Kararlı bir tanımlayıcı değildir. `code` üzerinden dallanın.
items[].error.paramstring- Reddedilen alan, O MESAJIN içinde noktalı bir yol olarak: `to.0`, `from`, `attachments`. Hata hiçbir alanı göstermiyorsa bulunmaz ve asla toplu istekteki konumla öneklenmez; o iş `index` alanınındır.