Belgelere geç
Python

Zamanlama ve iptal

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

Daha sonra gönderme

schedule.py
from datetime import datetime, timezone from openemail import openemailfrom openemail.types import EmailSend message: EmailSend = {'from': sender, 'to': recipient, 'subject': subject, 'text': text} openemail.emails.send({**message, 'scheduledAt': 'PT1H'})openemail.emails.send({**message, 'scheduledAt': datetime(2027, 1, 1, 9, 0, tzinfo=timezone.utc)})openemail.emails.send({**message, 'scheduledAt': '2027-01-01T09:00:00.000Z'})

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

Bir datetime UTC olarak gönderilir; saat dilimi bilgisi olmayan (naive) bir değer ise önce, astimezone nasıl okuyorsa öyle, bu makinenin yerel saati olarak okunur; bu yüzden saat dilimi önemliyse saat dilimi bilgisi olan (aware) bir değer geçirin. Bir timedelta kabul edilmez: onu datetime.now(timezone.utc) değerine ekleyin ya da PT1H gibi bir süre gönderin.

Erteleme ve durdurma

reschedule.py
from datetime import datetime, timedelta, timezone from openemail import openemailfrom openemail.types import EmailSend message: EmailSend = {'from': sender, 'to': recipient, 'subject': subject, 'text': text} queued = openemail.emails.send({**message, 'scheduledAt': 'PT1H'}) openemail.emails.reschedule(queued['id'], datetime.now(timezone.utc) + timedelta(days=1))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.py
from openemail import openemailfrom openemail.types import EmailSend message: EmailSend = {'from': sender, 'to': recipient, 'subject': subject, 'text': text} 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

scheduledAtdatetime | str
`emails.send` çağrısında ne zaman gönderileceği: bir `datetime`, 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.
cancellableForSecondsint
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.
idstrzorunlu
`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.
scheduled_atdatetime | strzorunlu
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

objectLiteral['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.
idstr
`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.
scheduledAtstr | None
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.
cancellableUntilstr | None
İ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.
sentAtstr | None
Mesajın gerçekte ne zaman gittiği. Beklerken null, iptal edilmiş bir mesajda ise sonsuza dek null.
messageIdstr | None
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.
threadIdstr | None
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 | str | None
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.
attemptsint
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.
lastErrorstr | None
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.
fromstr
Mesajın çıkmaya yetkilendirildiği adres: gönderilen `from`, çıplak ve küçük harfli olarak saklanır. Görünen ad burada düşürülür, çünkü `emails.list` içindeki `from_` filtresi eşitlikle karşılaştırır.

Referans