Belgelere geç
SDK

Zamanlama ve iptal

`scheduledAt`, `emails.reschedule` ve `emails.cancel`.

Daha sonra gönderme

schedule.ts
await openemail.emails.send({ ...message, scheduledAt: 'PT1H' })await openemail.emails.send({ ...message, scheduledAt: new Date('2027-01-01T09:00:00Z') })await openemail.emails.send({ ...message, scheduledAt: '2027-01-01T09:00:00.000Z' })

Bir Date, bir ISO-8601 anı veya PT1H / P2D gibi bir süre. En fazla bir yıl sonrası, asla geçmiş değil.

Erteleme ve durdurma

reschedule.ts
const queued = await openemail.emails.send({ ...message, scheduledAt: 'PT1H' }) await openemail.emails.reschedule(queued.id, new Date(Date.now() + 86_400_000))await openemail.emails.cancel(queued.id)

Yalnızca queued ve scheduled mesajlar durdurulabilir; bundan ötesi conflict_error verir, çünkü bir kısmı çoktan birinin posta kutusundadır. Zaten iptal edilmiş bir mesajı iptal etmek başarılı olur ve hiçbir şeyi değiştirmez.

Bunun yerine bir geri alma penceresi

undo-window.ts
await openemail.emails.send({ ...message, cancellableForSeconds: 30 })

Zamanlanmış bir mesaj gidene kadar zaten iptal edilebilir; bu yüzden ikisi birleştirilemez ve sunucu bunu reddeder. Anlık bir mesajda geri alma penceresi için bunu kullanın.

Parametreler: zamanlama

scheduledAtDate | string
`emails.send` çağrısında ne zaman gönderileceği: bir `Date`, bir ISO-8601 anı veya `PT1H` ya da `P2D` gibi bir süre; istemci bunu ağ için dizgeye dönüştürür. En az bir saniye ileride ve en fazla 365 gün sonrası olmalıdır; her iki sınır da `scheduledAt` üzerinde bir `validation_error` verir. Doğal dil kabul edilmez, çünkü “gelecek salı” ifadesini yanlış ayrıştırmak, mesajı geri alınamayacak bir zamanda gönderir.
cancellableForSecondsnumber
ANLIK bir gönderimde geri alma penceresi: 0 ile 900 arasında bir integer, varsayılan 0. 0'ın üzerindeki her değer, gidene kadar zaten iptal edilebilen `scheduledAt` ile birlikte reddedilir; bu şekilde bekletilen bir mesaj `scheduled` değil `queued` durumunda durur. Kısa bir gecikmeyle çalışan aynı erteleme mekanizmasıdır.
idstringzorunlu
`msg_…` id'si; hem `emails.cancel` hem de `emails.reschedule` çağrısının ilk argümanı. İkisi de kendine özgü bir kapsam yerine `emails:send` gerektirir ve ikisi de anahtarın kendi çalışma alanı içinde çözümlenir; dolayısıyla başka bir çalışma alanına ait bir id, hiç var olmamış bir id gibi `not_found_error` verir.
reschedule.scheduledAtDate | stringzorunlu
Yeni zaman; `emails.reschedule` çağrısının ikinci argümanı, aynı kurallarla ve aynı bir yıllık pencereye göre ayrıştırılır ve altta yatan `PATCH /emails/{id}` çağrısının değiştireceği tek şeydir. Bir süre, SUNUCUNUN onu okuduğu ana göre görelidir; bu yüzden yeniden denenen bir erteleme, ilkinin düşeceğinden biraz daha geç bir zamana düşer: daha geç, asla daha erken değil.

Yanıt: EmailResource

object'email'
Her zaman `email`. İki çağrı da bir onay yerine mesajın tamamıyla yanıt verir; böylece neyin değiştiğini görmek için hiçbir şeyi yeniden getirmek gerekmez. `emails.send` de aynı biçimi artı `replayed` döndürür.
idstring
`msg_…` tanıtıcısı. Mesajın ömrü boyunca sabittir ve üzerindeki diğer her çağrının aldığı id'dir.
statusEmailStatus
Bir iptalden sonra `cancelled`, bir ertelemeden sonra `scheduled`; bu, geri alma penceresi ardında yalnızca `queued` olan bir mesaj için de geçerlidir ve erteleme onu gerçek bir zamanlamaya çevirir. Yalnızca `queued` ve `scheduled` mesajlar ertelenebilir veya durdurulabilir; bundan ötesi `email_not_cancellable` koduyla bir `conflict_error` verir, çünkü bir kısmı çoktan birinin posta kutusundadır.
scheduledAtstring | null
Mesajın gönderilmesi gereken ISO anı. Bir `scheduledAt` gönderimi kadar geri alma penceresi için de ayarlanır, çünkü ikisi tek bir mekanizmadır; düz bir anlık gönderimde null olur.
cancellableUntilstring | null
İptalin ne zaman işe yaramaz hâle geldiği; bu, iki ertelemeli yolda da `scheduledAt` ile aynı andır. Çağrı döndüğünde çoktan gitmiş olan anlık bir gönderimde null.
sentAtstring | null
Mesajın gerçekte ne zaman gittiği. Beklerken null, iptal edilmiş bir mesajda ise sonsuza dek null.
messageIdstring | null
RFC 5322 Message-ID; MIME oluşana kadar null'dır, dolayısıyla bu iki çağrının üzerinde işlem yapabileceği bir mesajda her zaman null olur. API'ye adres olarak verilecek bir değer değildir ve sonraki bir geri dönüşün taşıyacağı değer de değildir: gönderim servisi başlığı çıkışta yeniden yazar.
threadIdstring | null
Mesajın ait olduğu konuşma dizisi; istekten alınır ve gönderim gerçekleştiğinde taşıma katmanının bildirdiği değerle yeniden yazılır. Mesaj bir yanıt değilse null.
transportEmailTransport | (string & {}) | null
Baytların nasıl gittiği; gönderime kadar null'dır, dolayısıyla bir iptalin veya ertelemenin döndürebileceği her mesajda null olur. Test modundaki bir gönderim `test` kaydeder ve birleşim tipi açık bırakılmıştır; böylece bu SDK'nın henüz adlandırmadığı bir taşıma katmanı kırıcı bir değişiklik olmaz.
attemptsnumber
Gönderim sürecinin bu satırı kaç kez üstlendiği. Başarılı bir gönderimle değil üstlenmeyle artırılır ve hâlâ bekleyen her şey için 0'dır.
lastErrorstring | null
Mesaja karşı kaydedilen son hata; hiçbir şey başarısız olmadıkça null. İşi kuyruğa alınamayan ertelenmiş bir gönderim buraya `Could not schedule: …` olarak yazılır ve `failed` durumuna taşınır; bu, zamanlanmış bir mesajın kimse istemeden iptal edilebilir olmaktan çıkmasının tek yoludur.
fromstring
Mesajın çıkmaya yetkilendirildiği adres; çıplak ve küçük harfli olarak saklanır. Her zaman istenen adres değildir (hiç `from` belirtmeyen, kapsamı daraltılmış bir anahtar kullanabileceği ilk adrese çözümlenir) ve görünen ad burada düşürülür, çünkü `emails.list` içindeki `from` filtresi eşitlikle karşılaştırır.