Kişiler, kitleler ve toplu gönderimler
Adres defteri, kitleler, toplu gönderimler ve engelleme listesi için her komut, uygulamalı örneklerle.
Birbirleriyle nasıl bağlantılıdır
Dört ad alanı, yazıştığınız kişileri kapsar. Kişiler çalışma alanının adres defteridir, kitleler adlandırılmış kişi listeleridir, bir toplu gönderim bazı kitlelerdeki herkese tek bir mesaj gönderir ve engelleme listesi çalışma alanının göndermeyeceği adresleri tutar. Her komut bir SDK yöntemini çağırır, bu yüzden SDK sayfaları aynı çağrıları daha ayrıntılı anlatır.
- Bir kişinin id'si yoktur. Adresi, her
contactskomutunun aldığı anahtardır; baştaki ve sondaki boşluklar kırpılır ve küçük harfe çevrilir, bu yüzden[email protected]ile[email protected]aynı kişidir. Bir kitleninaud_id'si, bir toplu gönderiminbrd_id'si, bir engellemenin desuppressions listkomutunun yazdırdığı id'si vardır. - Her kişi var olduğu sürece varsayılan kitlededir. O kitle silinemez, boşaltılamaz ya da azaltılamaz ve üzerindeki
builtindeğeridefaultolur. - Adres defteri çalışma alanına aittir, bu yüzden her üye ve her anahtar aynı defteri okur ve yazar.
- Her ad alanı tekil biçimine de yanıt verir, örneğin
openemail contact get; alışılmış takma adlar da çalışır:ls,show,new,editverm. Fiilleriaddveremoveolansuppressionsiçindenew,addfiiline;rmderemovefiiline götürür.
openemail <namespace> <verb> --help her bayrağı türüyle, kapsamları, uç noktayı ve komutun ne döndürdüğünü gösterir. Aynı sayfayı veri olarak almak için --json ekleyin.
Kişiler
Çalışma alanının adres defteri: bir üyenin uygulamanın yazma ekranından yazdığı kişiler ve elle kaydedilen herkes. Gelen posta kimseyi eklemez, API ya da CLI üzerinden bir gönderim de eklemez.
| Komut | Ne yapar |
|---|---|
| openemail contacts list | Kayıtlı kişilerden bir sayfa, en son posta gönderilen önce. --source, manual ya da auto kişileri tutar; --q adlarda ve adreslerde arar |
| openemail contacts get <email> | Tek bir kişi, içinde bulunduğu her kitleyle |
| openemail contacts create --email <value> | --name, --notes ve --audience-ids ile yeni bir kişi kaydedin. Defterde zaten bulunan bir adres 409 contact_exists ile reddedilir |
| openemail contacts update <email> | --name ya da --notes değerini değiştirin; null birini temizler. Adresin kendisi değiştirilemez |
| openemail contacts delete <email> | Kişiyi notları, fotoğrafı ve üyelikleriyle birlikte silin ve yazma ekranı onu yeniden kaydetmesin diye adresi gizleyin |
| openemail contacts set-audiences <email> --audience-ids <a,b> | Kişinin bulunduğu kitleleri tam olarak bu liste yapın. Varsayılan kitle her zaman korunur |
| openemail contacts list-people | Kişiler sayfasındaki herkes: kayıtlı kişiler ve threads:read ile postada görülen her adres, konuşma sayılarıyla. --sort, --q, --email ve --blocked daraltır |
| openemail contacts save <email> | Bir adresi kaydedin, bir gönderimden kaydedilmiş olanı tutun ya da silinmiş birini geri getirin. Adres hangi durumda olursa olsun asla hata vermez |
| openemail contacts delete-many <emails...> | Tek bir çağrıda 1 ile 200 arası adresi silin ve gizleyin |
| openemail contacts set-photo <email> <data> | Fotoğrafı bir dosyadan ya da - ile stdin'den yükleyin: en fazla 5 MB PNG, JPEG, WebP ya da GIF |
| openemail contacts remove-photo <email> | Fotoğrafı kaldırın ve saklanan görseli silin |
| openemail contacts block <email> | Adresi çalışma alanının engel listesine koyun, böylece ondan gelen posta reddedilir. Bir artı etiketi atılır |
| openemail contacts unblock <email> | Adresi engelleyen her engel listesi kuralını kaldırın, tüm alan adını kapsayan bir kural da dahil |
| openemail contacts list-threads <email> | Adresin yazdığı ya da kendisine yazılan konuşmalar, her klasörde. --q bunların içinde arar |
| openemail contacts activity <email> | Bir zaman aralığında adresten alınan ve adrese gönderilen posta; --minutes aksini söylemedikçe 90 gün. Yanıt bekleyen konuşmalar ve her iki yöndeki ortanca yanıt süresiyle birlikte |
Kitleler
Adlandırılmış kişi listeleri, bir çalışma alanında en fazla 100. Bir adresin bir listeye katılmadan önce kişi olması gerekir; yalnızca yeni adresleri ilerlerken kaydeden import-contacts bunun istisnasıdır.
| Komut | Ne yapar |
|---|---|
| openemail audiences list | Kitlelerden bir sayfa; önce varsayılan kitle, geri kalanlar en yeniden eskiye, her biri contactCount değeriyle |
| openemail audiences growth | Kitlelerin bir zaman aralığında nasıl büyüdüğü; --days ya da --minutes aksini söylemedikçe 30 gün: dilim başına katılımlar ve abonelikten çıkmalar ile toplamlar |
| openemail audiences get <id> | Tek bir kitle, güncel bir contactCount ile |
| openemail audiences create --name <value> | İsteğe bağlı bir --description ile boş bir kitle oluşturun. Adlar benzersiz değildir |
| openemail audiences update <id> | --name ya da --description değerini değiştirin. Üyeliğe dokunulmaz |
| openemail audiences delete <id> | Kitleyi silin ve kişilerini koruyun. Varsayılan kitle silinemez |
| openemail audiences empty <id> | Her kişiyi çıkarın ve kitleyi id'si, adı ve açıklamasıyla koruyun |
| openemail audiences list-contacts <id> | Kitledeki kişilerden bir sayfa; her birinin ne zaman katıldığı ve abonelikten çıkıp çıkmadığıyla. --sort, --q, --source ve --statuses daraltır |
| openemail audiences add-contact <id> --email <value> | Var olan tek bir kişiyi kitleye ekleyin. Zaten orada olan birini eklemek hiçbir şeyi değiştirmez |
| openemail audiences remove-contact <id> <email> | Tek bir kişiyi çıkarın. Kitlede olmayan bir kişi 404 verir |
| openemail audiences add-contacts <id> --emails <a,b> | En fazla 200 var olan kişiyi ekleyin ve kişi olmayan adresleri missing içinde bildirin |
| openemail audiences remove-contacts <id> --emails <a,b> | En fazla 200 kişiyi çıkarın ve içinde olmayanları bildirin |
| openemail audiences import-contacts <id> --contacts <json|@file|-> | Henüz kişi olmayan adresleri kaydederek en fazla 500 { email, name } satırı içe aktarın |
Toplu gönderimler
En fazla 10 kitledeki herkese tek bir mesaj; birleştirme alanları doldurulmuş ve bir abonelikten çıkma bağlantısıyla, her kişiye ayrı bir kopya olarak gönderilir. Her kopya kendi msg_ id'si, olayları ve webhook'ları olan sıradan bir e-postadır.
| Komut | Ne yapar |
|---|---|
| openemail broadcasts preview --audience-ids <a,b> | Bu kitlelere yapılacak bir toplu gönderimin kime ulaşacağını ve abonelikten çıkmış ya da engellenmiş olduğu için kimi atlayacağını sayın. Hiçbir şey göndermez |
| openemail broadcasts send --audience-ids <a,b> --from <value> | --subject ve --html ya da --text ile veya kayıtlı bir --template ile şimdi ya da --scheduled-at zamanında gönderin |
| openemail broadcasts list | Toplu gönderimlerden bir sayfa, en yeniden eskiye, canlı sayılarla. --audience-id o kitleye gönderilenleri tutar |
| openemail broadcasts get <id> | Tek bir toplu gönderim, durumu ve canlı sayılarıyla: gönderim sürerken tekrar tekrar sorgulanacak komut |
| openemail broadcasts stats <id> | Teslim edilen, geri dönen, açılan, tıklanan ve abonelikten çıkan toplamları ile her --grain dilimi için bir seri; siz aksini söylemedikçe bir saat |
| openemail broadcasts list-recipients <id> | Her kopyanın kime gittiği ve ona ne olduğu. --filter, bounced ya da not_opened gibi tek bir grubu tutar |
| openemail broadcasts get-recipient <id> <email-id> | Bir kişinin kopyası; konu, HTML ve metin tam olarak aldığı gibi |
| openemail broadcasts cancel <id> | Zamanlanmış, kuyrukta ya da hâlâ gönderilmekte olan bir toplu gönderimi durdurun. Gitmiş kopyalar geri çağrılamaz |
Engellemeler
Bu çalışma alanının göndermeyeceği adresler: gerçekleştikçe kaydedilen kalıcı geri dönmeler ve şikâyetler ile elle eklediğiniz her adres. Bunlardan birine yapılan gönderim, hiçbir şey çıkmadan o alıcı için reddedilir.
| Komut | Ne yapar |
|---|---|
| openemail suppressions list | Listeden bir sayfa, en yeniden eskiye. --reason, bounce, complaint ya da manual olanları tutar; --q arar |
| openemail suppressions get <id> | Tek bir satır: adres, neden, geri dönmenin ya da şikâyetin taşıdığı ayrıntı ve kaldırılıp kaldırılamayacağı |
| openemail suppressions add --email <value> | Bir adrese göndermeyi durdurun. Zaten orada olan bir adresi eklemek, onun tuttuğu satırı döndürür |
| openemail suppressions remove <id> | Adrese yeniden posta gönderilmesine izin verin. Kalıcı bir geri dönme kaldırılamaz |
Engellemeler ve engel listesi farklı listelerdir. suppressions add bir adrese giden postayı durdurur, contacts block ise ondan gelen postayı reddeder.
Kapsamlar
Çoğu komut kendi ad alanının okuma ya da yazma kapsamını gerektirir. Birkaçı başka bir şeyi okuduğu ya da değiştirdiği için başka bir kapsam ister:
| Kapsam | Komutlar |
|---|---|
| contacts:read | contacts list, get ve list-people |
| contacts:write | contacts create, update, delete, save, delete-many, set-photo ve remove-photo, ayrıca audiences:write ile birlikte audiences import-contacts |
| audiences:read | audiences list, growth, get ve list-contacts, ayrıca broadcasts preview; böylece gönderim yapamayan bir anahtar da sayıyı gösterebilir |
| audiences:write | Diğer tüm audiences komutları ve contacts set-audiences. contacts create --audience-ids bunu contacts:write ile birlikte gerektirir |
| threads:read | contacts list-threads ve activity, ayrıca list-people içinde postada görülen adresler |
| settings:read | suppressions list ve get |
| settings:write | suppressions add ve remove, ayrıca contacts block ve unblock |
| emails:read | broadcasts list, get, stats, list-recipients ve get-recipient |
| emails:send | audiences:read da gerektiren broadcasts send ve broadcasts cancel |
- Belirli adreslerle ya da alan adlarıyla sınırlı bir anahtar, diğer her anahtarla aynı adres defterini okur ve yazar. Yalnızca tuttuğu bir adresten ya da alan adından gönderilen toplu gönderimleri görür,
list-peoplekomutundan yalnızca kayıtlı kişileri alır vecontacts list-threads,activity,blockveunblockilesuppressions addveremovetarafından 422capability_unsupportedile reddedilir. - Yalnızca bazı adreslere erişebilen bir üyenin tarayıcı oturumu, her
contacts,audiencesvebroadcastskomutunda 422capability_unsupportedile reddedilir.suppressions add, çalışma alanı sahibi dışındaki herkesin tarayıcı oturumunu reddeder.
Uygulamalı örnekler
Bir dosyadan kitle oluşturun, ardından ona yapılacak bir toplu gönderimin kime ulaşacağını sayın. import-contacts henüz kişi olmayan adresleri kaydeder ve yeniden çalıştırmak hiçbir şeyi iki kez oluşturmaz ya da eklemez.
[ { "email": "[email protected]", "name": "Ada Lovelace" }, { "email": "[email protected]", "name": "Grace Hopper" }, { "email": "[email protected]" }]AUDIENCE=$(openemail audiences create --name 'Product updates' --json | jq -r .id)openemail audiences import-contacts "$AUDIENCE" --contacts @contacts.jsonopenemail broadcasts preview --audience-ids "$AUDIENCE"Bir toplu gönderimi isteği yazdıran ve hiçbir şey göndermeyen --dry-run ile kontrol edin, sonra gönderin. Toplu gönderim hemen oluşturulur ve arka planda gönderilir, bu yüzden izlemek için get ile sorgulayın. Bu gövde {{unsubscribeUrl}} yerleştirmediği için her kopya tek satırlık bir abonelikten çıkma alt bilgisi alır.
{ "audienceIds": ["aud_4c1b8e2a7d9f05c36b4e8a71"], "from": "Acme <[email protected]>", "subject": "{{firstName|Hello}}, the September release is out", "html": "<p>Hi {{firstName|there}},</p><p>Here is what changed this month.</p>", "scheduledAt": "2026-10-01T09:00:00Z"}openemail broadcasts send --data @broadcast.json --dry-runBROADCAST=$(openemail broadcasts send --data @broadcast.json --yes --json | jq -r .id)openemail broadcasts get "$BROADCAST"openemail broadcasts stats "$BROADCAST" --grain dayBir toplu gönderimin kime ulaşmadığını görün. --ndjson her satıra bir alıcı, --all --json ise her sayfayı içeren tek bir belge yazdırır.
openemail broadcasts list-recipients brd_5a8c1e3f7b2d94a06c8e1f3b --filter bounced --ndjson | jq -r .emailopenemail broadcasts list-recipients brd_5a8c1e3f7b2d94a06c8e1f3b --filter not_opened --all --json | jq ".items | length"openemail suppressions list --reason bounce --all --max 50Bir kitlenin abone üyelerini başka bir kitleye kopyalayın. jq akışı add-contacts komutunun aldığı gövdeye dönüştürür ve --data - onu stdin'den okur. --max 200 onu tek bir çağrının kabul ettiği 200 adresle sınırlar.
openemail audiences list-contacts aud_9f2c4b7e1a0d63d84c5f2e7b --statuses subscribed --max 200 --ndjson \ | jq -s '{ emails: map(.email) }' \ | openemail audiences add-contacts aud_1c4e7a9b2d0f36e85a7c1b4d --data -Yazma ekranının bir alan adında kaydettiği her kişiyi silin. delete-many çağrı başına en fazla 200 adres alır, bu yüzden xargs -n 200 daha uzun bir listeyi böler. Geri alma olmadığı için grupları önce --dry-run ile kontrol edin.
openemail contacts list --source auto --all --ndjson \ | jq -r 'select(.email | endswith("@old-vendor.example")) | .email' > leaving.txtxargs -n 200 openemail contacts delete-many --dry-run < leaving.txtxargs -n 200 openemail contacts delete-many --yes < leaving.txtBir adrese göndermeyi durdurun, birine yeniden izin verin ve bir göndereni engelleyin. removable, suppressions remove komutunun hangi satırları alacağını söyler.
openemail suppressions add --email [email protected]openemail suppressions list --q [email protected] --json | jq -r '.items[] | select(.removable) | .id'openemail suppressions remove 7b1e2c3d-4f5a-4b6c-8d7e-9f0a1b2c3d4e --yesopenemail contacts block [email protected]Onaylar ve doğrulama kodları
Bu komutlar çalışmadan önce terminalde onay ister:
| Ad alanı | Onay ister |
|---|---|
| contacts | delete, delete-many, remove-photo ve unblock |
| audiences | delete, empty, remove-contact ve remove-contacts |
| broadcasts | send ve cancel |
| suppressions | remove |
--yessizin yerinize onaylar. Gözetimsiz çalışırken, yani--jsonya da--no-inputile, CI'da ya da terminal olmadan, soru soracak bir komutRefusing to run unattended. Pass --yes to confirm.iletisi ve2çıkış koduyla durur.--dry-runkomutun göndereceği isteği yazdırır ve sormadan, hiçbir şeyi değiştirmeden0koduyla çıkar.- Bir tarayıcı oturumuyla
audiences delete, web uygulamasında olduğu gibi önce bir doğrulama kodu ister.--yesbunu asla atlamaz ve gözetimsiz çalışırken komut4çıkış koduyla durur. Öncedenopenemail verifyçalıştırın ya da kendisinden asla kod istenmeyen bir API anahtarı kullanın. audiences emptyasla doğrulama kodu istemez, bu yüzden--yesvermeden önce id'yi kontrol edin.
Sayfalama
Listeleyen her komut tek bir sayfa okur. Daha fazlası kaldığında, yazdırdığı imleci aynı filtrelerle --cursor bayrağına verin ya da hepsini okuyun:
--allher sayfayı okur ve öğeleri akış hâlinde verir: terminalde bir tablo, bir kanala yönlendirildiğinde ya da--ndjsonile her satıra bir JSON nesnesi.--max <n>o kadar öğeden sonra durur ve--allanlamına gelir.--json,--alldahil, tek bir{ items, hasMore, nextCursor }belgesi yazdırır.- Bozuk ya da eskimiş bir imleç 400
invalid_cursorverir. İmleç olmadan yeniden başlayın.
| Komut | Sayfa boyutu |
|---|---|
| openemail contacts list | 1 ile 200 arası, --limit aksini söylemedikçe 50 |
| openemail contacts list-people | 1 ile 100 arası, --limit aksini söylemedikçe 25 |
| openemail contacts list-threads | 1 ile 100 arası, --limit aksini söylemedikçe 25 |
| openemail audiences list | 1 ile 100 arası, --limit aksini söylemedikçe 25 |
| openemail audiences list-contacts | 1 ile 200 arası, --limit aksini söylemedikçe 50 |
| openemail broadcasts list | 1 ile 100 arası, --limit aksini söylemedikçe 25 |
| openemail broadcasts list-recipients | 1 ile 200 arası, --limit aksini söylemedikçe 50 |
| openemail suppressions list | 1 ile 100 arası, --limit aksini söylemedikçe 25 |
Bilinmesi iyi olanlar
contacts create, defterde zaten bulunan bir adresi 409contact_existsile reddeder, bu yüzden bir yeniden deneme birinin düzenlediği bir adın üzerine asla yazmaz.contacts saveise asla reddetmez: adres hangi durumda olursa olsun onu kaydeder, korur ya da geri getirir.contacts delete, yalnızca postada görülmüş bir adresi de alır; bu da o kişiyilist-peoplelistesinden çıkarır. Posta kalır. Geri alma yoktur: adresi yeniden kaydetmek, adı, notları ve varsayılan kitle dışında kitlesi olmayan bir kişi başlatır.- Adres bir kişinin kimliğidir, bu yüzden
contacts updateonu değiştiremez. Bir kişiyi taşımak birdeleteve bircreatedemektir. contacts set-photogörseli bir dosyadan ya da-ile stdin'den okur.image/jpeggibi bir--content-typeverin: o olmadan görselapplication/octet-streamolarak gidebilir ve sunucu bunu 422invalid_imageile reddeder.broadcasts send --scheduled-at,2026-10-01T09:00:00Zgibi bir ISO 8601 zamanı ya daPT2HveyaP1Dgibi bir ISO 8601 süresini, en fazla 365 gün ileriye kadar alır.send --atkomutunun aldığı2hgibi kısa gecikmeler burada reddedilir.- Birleştirme alanları
--subject,--htmlve--textiçinde çalışır:{{firstName}},{{lastName}},{{name}},{{email}}ve{{unsubscribeUrl}}; her birinin bir dikey çizgiden sonra bir yedek değeri olabilir, örneğin{{firstName|there}}.{{unsubscribeUrl}}yerleştirmeyen bir gövde tek satırlık bir abonelikten çıkma alt bilgisi alır. Bir şablon olduğu gibi gönderilir, bu yüzden bağlantıyı şablona koyun. - Bir toplu gönderim, herhangi bir şey yazılmadan önce planın aylık gönderimlerine göre denetlenir ve her kopya bir gönderim sayılır. Kotanın karşılayamadığı bir toplu gönderim 429
send_quota_exceededile reddedilir ve geride hiçbir şey kalmaz. - Bir betik adımı yeniden çalıştırabilecekse
broadcasts sendkomutuna kendi--idempotency-keydeğerinizi verin. Aynı anahtar, yenisini göndermek yerine oluşturduğu toplu gönderimle yanıt verir. - Bir toplu gönderimden abonelikten çıkan bir kişi,
unsubscribedAtayarlı olarak kitlede kalır ve o kitleye yapılan sonraki toplu gönderimler onu atlar.audiences list-contacts --statuses unsubscribedbunları listeler. - Kalıcı bir geri dönme engelleme listesinde kalır.
suppressions removeonu 409suppression_not_removableile reddeder ve her satırdakiremovablebunu önceden söyler.