Zamanlama ve iptal
`scheduledAt`, `emails->reschedule`, `emails->update` ve `emails->cancel`.
Daha sonra gönderme
$message = [ 'from' => '[email protected]', 'to' => '[email protected]', 'subject' => 'Your September invoice', 'text' => 'Invoice attached.',]; $client->emails->send([...$message, 'scheduledAt' => 'PT1H']);$client->emails->send([...$message, 'scheduledAt' => new \DateTimeImmutable('2027-01-01 09:00', new \DateTimeZone('UTC'))]);$client->emails->send([...$message, 'scheduledAt' => '2027-01-01T09:00:00.000Z']);Bir DateTimeInterface, dize olarak bir ISO 8601 anı ya da PT1H veya P2D gibi bir süre. En fazla bir yıl ileri, asla geçmişte değil. Daha önce kurduğunuz bir iletiyi yanına scheduledAt koyarak yeni bir diziye yaymak alanı ekler ve özgün iletiye dokunmaz.
Bir DateTimeInterface, hangi saat diliminde oluşturulmuş olursa olsun UTC'de bir an olarak gönderilir; bu yüzden Europe/London saatiyle 09:00, belirttiği an olarak gider. 2027-01-01 gibi saat içermeyen bir tarih dizesi o günün UTC gece yarısı olarak okunur; bu yüzden saat önemliyse bir an geçirin.
Erteleme ve durdurma
$message = [ 'from' => '[email protected]', 'to' => '[email protected]', 'subject' => 'Your September invoice', 'text' => 'Invoice attached.',]; $queued = $client->emails->send([...$message, 'scheduledAt' => 'PT1H']); $client->emails->reschedule($queued['id'], new \DateTimeImmutable('+1 day'));$client->emails->cancel($queued['id']);Yalnızca queued ve scheduled iletiler durdurulabilir. Daha ileri aşamadaki her şey bir ConflictException fırlatır, çünkü bir kısmı zaten birinin posta kutusundadır. Zaten iptal edilmiş bir iletiyi iptal etmek başarılı olur ve hiçbir şeyi değiştirmez.
Bir zaman aralığında gönderilmeyi bekleyenleri bulmak için, uygulamanın takviminin yaptığı gibi status: ['scheduled', 'queued'] ile scheduledFrom: ve scheduledTo: kullanarak listeleyin.
Gitmeden önce değiştirme
emails->update henüz gitmemiş bir iletiyi değiştirir: ne zaman gideceğini scheduledAt ile, ne söylediğini subject, html ve text ile, hangi adresle çıkacağını from ile, kime gideceğini ise to, cc ve bcc ile. Bunlardan herhangi birini birlikte gönderebilirsiniz; belirtmediğiniz bir alan değerini korur. Bir alıcı listesi saklanan listenin tamamının yerini alır. Uygulamanın takviminde zamanlanmış bir iletiyi düzenlemek de tam olarak bunu yapar.
$updated = $client->emails->update('msg_3f9a1c07d2b84e6a9c5b1f20', [ 'subject' => 'Your September invoice, corrected', 'to' => ['[email protected]', '[email protected]'], 'scheduledAt' => new \DateTimeImmutable('2026-10-05 08:00', new \DateTimeZone('UTC')),]); echo $updated['status'], ' ', $updated['subject'], ' ', $updated['scheduledAt'], PHP_EOL;from bir gönderimde olduğu gibi denetlenir, bu yüzden anahtarın adına gönderebileceği bir adres olmalıdır. Kabul edildiğinde çevrilmiş bir ileti onaylanmış metnini korur; bu yüzden ona verilen yeni bir subject, html ya da text 409 translation_locked verir. Zamanlanmadan önce şifrelenmiş bir ileti de metnini ve alıcılarını korur. Bunları değiştirmek yerine iptal edip yeniden gönderin.
Bunun yerine bir geri alma penceresi
$message = [ 'from' => '[email protected]', 'to' => '[email protected]', 'subject' => 'Your September invoice', 'text' => 'Invoice attached.',]; $held = $client->emails->send([...$message, 'cancellableForSeconds' => 30]); echo $held['status'], ' ', $held['cancellableUntil'], PHP_EOL;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
scheduledAtDateTimeInterface or string- `emails->send` üzerinde ne zaman gönderileceği: bir `DateTimeInterface`, dize olarak bir ISO 8601 anı ya da `PT1H` veya `P2D` gibi bir süre. Bir `DateTimeInterface` bir UTC anı olarak, bir dize ise olduğu gibi gönderilir; saat içermeyen bir tarih dizesi UTC gece yarısı anlamına gelir. En az bir saniye sonra ve en fazla 365 gün ileride olmalıdır; iki sınırın ihlali de `scheduledAt` üzerinde bir `validation_error` verir. Doğal dil kabul edilmez, çünkü “gelecek salı” ifadesini yanlış ayrıştırmak bir iletiyi geri alınamayacak bir zamanda gönderir.
cancellableForSecondsint- ANINDA bir gönderim için gönderimi geri alma penceresi: 0 ile 900 arasında bir int, varsayılanı 0. 0'dan büyük her değer, gidene kadar zaten iptal edilebilen `scheduledAt` ile birlikte reddedilir; bu şekilde bekletilen bir ileti `scheduled` değil, `queued` durumunda bekler. Bu, kısa bir gecikmeyle aynı erteleme mekanizmasıdır.
$idstringzorunlu- `msg_` kimliği; `emails->cancel`, `emails->reschedule` ve `emails->update` çağrılarının ilk argümanı. Bunlar kendilerine ait bir kapsam yerine `emails:send` gerektirir ve kimliği anahtarın kendi çalışma alanında arar; bu yüzden başka bir çalışma alanına ait bir kimlik, hiç var olmamış bir kimlik gibi tam olarak `not_found_error` verir.
$scheduledAtDateTimeInterface or stringzorunlu- `emails->reschedule` çağrısının ikinci argümanı olarak yeni zaman; aynı kurallarla ve aynı bir yıllık pencereye göre okunur. `reschedule` yalnızca bunu değiştirir ve istemci başka hiçbir şey göndermez. Bir süre, SUNUCUNUN onu okuduğu ana göredir; bu yüzden yeniden denenen bir yeniden zamanlama, ilkinin düşeceği andan biraz sonraya düşer: daha sonraya, asla daha önceye değil.
apiKeystring- Üç çağrının herhangi birinde kullanılan adlandırılmış bir argüman. İstemcinin anahtarı yerine bu anahtarla işlem yapar.
Yanıt
cancel, reschedule ve update her biri iletinin tamamını API'nin camelCase adlarıyla anahtarlanmış bir dizi olarak döndürür.
objectstring- Her zaman `email`. Bu çağrılar bir onay yerine iletinin tamamıyla yanıt verir; bu yüzden neyin değiştiğini görmek için hiçbir şeyin yeniden getirilmesi gerekmez. `emails->send` aynı biçimi ve ek olarak `replayed` döndürür.
idstring- `msg_` tanıtıcısı. İletinin ömrü boyunca sabittir ve onunla ilgili diğer her çağrının aldığı kimliktir.
statusstring- İptalden sonra `cancelled`, yeniden zamanlamadan sonra `scheduled`. Bu, bir geri alma penceresinin ardında yalnızca `queued` durumunda olan bir ileti için de geçerlidir ve yeniden zamanlama onu gerçek bir zamanlamaya dönüştürür. Yalnızca `queued` ve `scheduled` iletiler taşınabilir ya da durdurulabilir. Daha ileri aşamadaki her şey `errorCode` değeri `email_not_cancellable` olan bir `ConflictException` fırlatır, çünkü bir kısmı zaten birinin posta kutusundadır.
scheduledAtstring or null- İletinin sevk edilmesi gereken ISO 8601 anı. İkisi tek bir mekanizma olduğu için hem bir geri alma penceresi hem de `scheduledAt` ile yapılan bir gönderim için ayarlanır; sıradan bir anında gönderimde null olur.
cancellableUntilstring or null- İptalin artık çalışmadığı an; iki ertelenmiş yolda da `scheduledAt` ile aynı andır. Çağrı döndüğünde zaten gitmiş olan anında bir gönderimde null.
sentAtstring or null- İletinin gerçekte çıktığı an. Beklerken null, iptal edilmiş bir iletide ise sonsuza dek null.
messageIdstring or null- RFC 5322 Message-ID; MIME oluşana kadar null, bu yüzden bu çağrıların işlem yapabildiği bir iletide her zaman null. API'ye hitap etmek için kullanılacak bir şey değildir ve daha sonraki bir geri dönme de bununla gelmez: gönderim hizmeti başlığı çıkışta yeniden yazar.
threadIdstring or null- Bu iletinin ait olduğu konuşma dizisi; istekten alınır ve gönderildikten sonra taşıma katmanının bildirdiği değerle yeniden yazılır. Bir yanıt değilse null.
transportstring or null- Baytların nasıl çıktığı; sevk edilene kadar null, bu yüzden bir iptalin ya da yeniden zamanlamanın döndürebileceği her iletide null. Test modunda bir gönderim `test` kaydeder ve bu paketin henüz adlandırmadığı bir taşıma katmanı da görünebilir; bu yüzden bilinmeyen bir değeri bir hata olarak değil, bir bilgi olarak ele alın.
attemptsint- Sevk işleminin bu kaydı kaç kez sahiplendiği. Başarılı bir gönderimle değil, her sahiplenmeyle artar ve hâlâ bekleyen her şey için 0'dır.
lastErrorstring or null- İleti için 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 iletinin kimse istemeden iptal edilemez hâle gelmesinin tek yoludur.
fromstring- İletinin hangi adresle çıkmasına yetki verildiği: gönderilen `from`, çıplak ve küçük harfe çevrilmiş olarak saklanır. Görünen ad burada atılır, çünkü `emails->list` çağrısının `from:` filtresi eşitliğe göre karşılaştırır.