Zamanlama ve iptal
`scheduledAt`, `emails.reschedule` ve `emails.cancel`.
Daha sonra gönderme
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
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
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.