Listeleme ve getirme
`emails.list`, `emails.list_all`, `emails.iterate`, `emails.get` ve `emails.list_events`.
emails.list
filters = {status: ["queued", "scheduled"], from: "[email protected]"} first = client.emails.list(**filters, limit: 50)second = client.emails.list(**filters, limit: 50, cursor: first.next_cursor) if first.next_cursor p first.items.size, second&.items&.sizeBir sayfa, items, has_more? ve next_cursor içeren bir OpenEmail::Page nesnesidir. Sonraki sayfa için next_cursor değerini aynı filtrelerle cursor: olarak geri geçirin.
emails.iterate ve emails.list_all
client.emails.iterate(status: "failed") do |email| warn "#{email[:id]} #{email[:lastError]}"end failures = client.emails.list_all(status: "failed", from: "[email protected]")puts failures.sizeİkisi de next_cursor değerini sizin için izler. iterate bir sayfayı yalnızca dolaşma oraya ulaştığında getirir; bu yüzden bloktaki break ya da blok olmadan döndürdüğü Enumerator üzerindeki first veya find istekleri durdurur. list_all ise tek bir Array döndürmeden önce her sayfayı dolaşır, bu yüzden ona sonu olan bir filtre verin. Her iki durumda da anahtar kümesine dayalı (keyset) sayfalama kullanılır; böylece dolaşma sırasında gelen bir ileti, bir ofsetin yapacağı gibi bir satırın atlanmasına yol açamaz.
emails.get ve emails.list_events
email = client.emails.get("msg_3f9a1c07d2b84e6a9c5b1f20")puts email[:status]p email[:recipients] events = client.emails.list_all_events("msg_3f9a1c07d2b84e6a9c5b1f20")events.each { |event| puts "#{event[:type]} #{event[:createdAt]}" }recipients döndüren tek çağrı get'tir: her adres için kendi status, error ve deliveredAt değerlerine sahip bir Hash. Her biri alıcılarını taşıyan elli iletilik bir liste, kimsenin istemediği bir rapor sayfası olurdu.
list_events bir gönderimin olay geçmişini en eskiden başlayarak okur: email.accepted, email.queued, email.sent, email.delivered, email.bounced, email.opened ve diğerleri; her biri biçimi type değerine bağlı olan bir data Hash'i içerir. list_all_events ve iterate_events geçmişin tamamını sizin için dolaşır. Webhook'lar aynı olayların bir alt kümesini gerçekleştikçe teslim eder; bu yüzden bir webhook kaçırıldığında bakılacak yer burasıdır.
Parametreler
statusString or Array<String>- Bir ya da birkaç durum (`queued`, `scheduled`, `sending`, `sent`, `partial`, `bounced`, `cancelled`, `failed`); verilenlerden herhangi biriyle eşleşir. `bounced`, iletinin gittiği her alıcıda geri döndüğü anlamına gelir; bazılarında geri dönüp diğerlerine ulaşan bir ileti ise `partial` olarak görünür. Sunucu virgüllere göre böldüğü için gem bir Array'i virgülle ayrılmış tek bir değer olarak gönderir ve küme dışındaki bir değer, bilinmeyeni adlandıran bir 422 verir.
broadcast_idString- Yalnızca tek bir toplu gönderimin kopyaları; `broadcasts.send` çağrısından gelen bir `brd_` kimliği. Bir toplu gönderimin ulaştığı her kişi kendine ait bir ileti alır; bu yüzden bu liste, gönderimin kime gittiğini ve her kopyaya ne olduğunu gösterir. `broadcasts.list_recipients` aynı kişileri açılmaları, tıklamaları ve abonelikten çıkmalarıyla birlikte listeler.
fromString- Kaydedildiği hâliyle, yani küçük harfe çevrilmiş çıplak `addr@host` olarak gönderen adresle tam eşleşme. Kayıt, görünen ad çıkarılarak yazılır; bu yüzden `Acme <[email protected]>` gibi açılı ayraçlı bir adres hiçbir şeyle eşleşmez. Değeriniz karşılaştırmadan önce küçük harfe çevrilir ve bu bir önek ya da alan adı eşleşmesi değil, eşitlik karşılaştırmasıdır.
scheduled_fromTime, DateTime or String- Yalnızca bu an ya da sonrası için zamanlanmış iletiler. `scheduled_to:` ve `status: ["scheduled", "queued"]` ile birlikte, uygulamanın takviminin yaptığı gibi bir zaman aralığında gönderilmeyi bekleyenleri listeler. `scheduledAt` değeri olmayan bir ileti dışarıda kalır. Bir Time, bir DateTime ya da ofsetiyle birlikte bir ISO 8601 anı geçirin: bir Ruby Date çıplak bir tarih olarak gönderilir ve bu iki filtre onu reddeder.
scheduled_toTime, DateTime or String- Yalnızca bu an ya da öncesi için zamanlanmış iletiler. `scheduled_to:` değerinden sonra gelen bir `scheduled_from:` 422 `invalid_parameter` verir.
limitInteger- Bu sayfadaki satır sayısı; 1 ile 100 arası, varsayılanı 25. Bu aralığın dışındaki bir değer kırpılmaz, 422 ile reddedilir. `list_all` ve `iterate` üzerinde, getirdikleri her sayfanın boyutudur.
cursorString- Sayfalamaya başlanacak ileti kimliği (`msg_…`). Ofset değil, anahtar kümesi (keyset): satırlar o iletinin `createdAt` değerinden kesinlikle daha eski olarak döner; böylece sayfa ortasında gelen gönderimler bir satırı sizden öteye itemez. Bu çalışma alanındaki hiçbir iletiyi belirtmeyen bir kimlik 400 `invalid_cursor` verir.
api_keyString- İstemcinin anahtarı yerine bu anahtarla listeler.
Bazı adreslere daraltılmış bir anahtar yalnızca kapsadığı adreslerden gönderilen iletileri okur ve sayfa bu filtreden sonra kesilir; bu yüzden sonuncusu dışındaki her sayfa yine de limit kadar satır içerir. Anahtarın kapsamadığı bir from: 403 yerine boş bir son sayfa döndürür.
Yanıt: OpenEmail::Page
itemsArray<Hash>- `createdAt` değerine göre en yeniden eskiye sıralanmış tek sayfalık mesaj; API'nin `data` zarfından çıkarılmıştır. Liste satırları adres başına `recipients` dökümünü asla taşımaz. O döküm `get` üzerindedir.
has_more?Boolean- Filtreyle eşleşen, bu sayfanın ötesinde başka satır olup olmadığı. İkinci bir sayım sorgusuyla değil, `limit` değerinden bir satır fazla getirilerek yanıtlanır.
next_cursorString or nil- `cursor:` olarak geri geçirilecek kimlik; son sayfada nil. `iterate` ve `list_all`, bu değer nil olduğunda ya da `has_more?` false olduğunda durur, çünkü devamı olduğunu iddia edip hiçbir cursor belirtmeyen bir sayfa sonsuza dek döngüye girerdi.
Her öğe
objectString- Bu listenin bir satırında her zaman `email`.
idString- Bu API'nin kendi kimliği, `msg_…`. Diğer tüm emails çağrılarının aldığı ve bir cursor'ın belirttiği değer budur.
statusString- Mesajın yaşam döngüsünde nerede olduğu. `partial`, başarısızlığın bir türü değil kendi başına bir durumdur: bazı alıcılar mesajı almıştır ve bu geri alınamaz, dolayısıyla yeniden denemek yanlıştır. `bounced`, mesajın gönderildikten sonra her alıcıdan geri döndüğü, yani kimsenin almadığı anlamına gelir; `get` içindeki her alıcı nedenini söyler.
modeString- `live` veya `test`; gönderen anahtardan alınır. Test gönderimi burada kaydedilir ve asla iletilmez.
fromString- Gönderimin yetkilendirildiği adres; çıplak ve küçük harfe çevrilmiş olarak saklanır, bu yüzden `from` üzerinde verilen bir görünen ad ağa yine gider ama burada tutulmaz. Hash değil düz bir String'dir, çünkü bu yetkilendirilmiş kimliktir: bir anahtarın gönderim kapsamı dışındaki, ne sahip olduğu bir alan adında olan ne de anahtarda adı geçen bir adres 403 ile reddedilir; asla sessizce kapsamdaki bir adresle değiştirilmez.
subjectString or nil- Saklandığı hâliyle konu. Konusuz kaydedilmiş bir iletide nil.
messageIdString or nil- Bizim kimliğimiz değil, RFC 5322 Message-ID. MIME oluşana kadar nil'dir ve gönderim hizmeti tarafından çıkışta yeniden yazılır; bu yüzden daha sonraki bir geri dönme ya da DSN farklı bir kimlik taşır ve bunun yerine `id` ile ilişkilendirilir.
threadIdString or nil- Verilmiş ya da atanmışsa bu iletinin ait olduğu konuşma dizisi. Aksi hâlde nil.
transportString or nil- Baytların nasıl çıktığı. Sevk edilene kadar nil. Saklanan kayıtlar artık kullanılmayan taşıma katmanlarını hâlâ adlandırabilir; bu yüzden bilmediğiniz bir değeri bir hata olarak değil, bir bilgi olarak ele alın.
attemptsInteger- Mesaj için kaç gönderim denemesi yapıldığı; ilkinden önce 0.
lastErrorString or nil- Bir insan için yazılmış en son sevk hatası. Hiçbir şey başarısız olmadıkça nil.
scheduledAtString or nil- İletinin çıkması gereken an, ISO 8601 anı olarak. Yalnızca iptal penceresi olmayan anında bir gönderimde nil: pencere kısa bir gecikmeden başka bir şey değildir, bu yüzden `cancellableForSeconds` de bu alanı doldurur; bu durumda satırın `status` değeri `scheduled` değil, `queued` olur.
cancellableUntilString or nil- İletinin çıkması gereken an; ertelenmiş her gönderimde `scheduledAt` ile aynı değeri taşır, ertelenmemiş olanda nil'dir. Sunucunun yaptığı denetim değil, gösterilecek bir zaman damgasıdır: `cancel` dallanmayı `status` değerine göre yapar ve bir iletiyi yalnızca hâlâ `queued` ya da `scheduled` iken durdurur.
sentAtString or nil- İletinin gittiği an. Sevk tamamlanana kadar nil'dir; dallanma için bu alanın değil, `status` alanının kullanılmasının nedeni budur.
tagsHash- Gönderimde verilen etiketler; olduğu gibi geri döndürülür ve asla yorumlanmaz. Her zaman bir Hash'tir (hiçbiri ayarlanmadıysa boş, asla nil değil) ve yalnızca geri döndürülür: bu liste `status`, `from`, `broadcast_id` ve zamanlama penceresine göre filtreler; bu yüzden bir etiket, bir iletiyi bulmanın yolu değil, iletiden okunacak bir şeydir.
broadcastIdString or nil- Bu iletinin kopyalarından biri olduğu `brd_` toplu gönderimi; tek başına gönderilmiş bir ileti için nil.
sourceString- Gönderimi hangi yüzeyin istediği: `composer`, `api`, `mcp`, `ai` veya `queue`. `api` bu istemcidir.
createdAtString- Gönderim kaydının ne zaman yazıldığı; bu, gönderimden öncedir. Listenin sıraladığı ve bir cursor'ın karşılaştırdığı alan budur.
trackingHash- Etkileşim özeti; yalnızca iletisi izlenmiş bir satırda bulunur, diğerlerinde yoktur. Yokluğu “bu izlendi mi” sorusunun yanıtıdır; 0 değerindeki bir `openCount` ise “kimse açmadı” olarak okunurdu.
translationHash- Bir liste satırında asla bulunmaz: çeviri kaydı, listenin bilerek getirmediği saklanan istekte yer alır. Buradaki yokluğu, mesajın çevrilip çevrilmediği hakkında hiçbir şey söylemez. `get` çağrısına sorun.
Bir öğenin izlemesi
opensBoolean- Bu mesajın bir pikselle gidip gitmediği. Hesap ayarının şu anda ne dediği değil, bu mesaja ne uygulandığı.
clicksBoolean- Bu iletinin bağlantılarının yeniden yazılıp yazılmadığı. Gövdede yeniden yazılacak bağlantı yoksa false, çünkü o durumda hiçbir şey değişmemiştir.
openedBoolean- Sayılan herhangi bir açılmanın kaydedilip kaydedilmediği; 0'dan büyük `openCount` değerinden türetilir.
clickedBoolean- Sayılan herhangi bir tıklamanın kaydedilip kaydedilmediği; 0'dan büyük `clickCount` değerinden türetilir.
openCountInteger- Bir insanın yol açtığına inanılan açılmalar, mesajın her kopyası üzerinden toplanır. Tarayıcı botları ve gizlilik vekilleri kaydedilir ama hariç tutulur; otuz saniye içindeki tekrarlı istekler tek bir açılmaya indirgenir.
clickCountInteger- Sayılan tıklamalar, kopyalar üzerinden toplanır. Mesaj başına değil bağlantı başına tekilleştirilir, çünkü saniyeler arayla iki bağlantıya tıklamak bir tekrar değil iki ayrı eylemdir.
firstOpenAtString or nil- Kopyalar genelinde sayılan en erken açılma; hiç yokken nil. Makine erişimleri onu asla değiştirmez.