Belgelere geç
CLI

Konuşmalar, taslaklar ve etiketler

threads, drafts ve labels ad alanlarındaki her komut ve bunların inbox, read, archive ve diğer posta komutlarının altında nasıl yer aldığı.

Genel bakış

inbox, read, archive ve label add gibi posta komutları insanlar için yazılmıştır: aynı anda birkaç konuşma id'si alırlar, yazdırdıklarını biçimlendirirler ve etiket id'lerini gözden uzak tutarlar. Her biri bu sayfadaki komutları çalıştırır; bunlar konuşmalar, taslaklar ve etiketler için SDK yöntemleridir, her yöntem için bir komut. Bu yüzden threads.listAttachments, openemail threads list-attachments olur.

Posta komutlarının dışarıda bıraktıklarına ihtiyaç duyduğunuzda bunları kullanın: API'nin döndürdüğü hâliyle bir konuşma, bir mesajdaki dosyalar, taslaklar ve etiket oluşturma, yeniden adlandırma, yeniden renklendirme ya da silme.

  • openemail thread ve openemail draft çoğul adlar kadar iyi çalışır. openemail labels komutunun tekil biçimi yoktur: openemail label, konuşmalara etiket koyan posta komutudur.
  • Fiiller alışılmış takma adları alır: list için ls, get için show ve view, create için new ve add, update için edit, delete için rm, del ve remove.
  • Her bayrak openemail <namespace> <verb> --help içindedir, örneğin openemail threads list --help.

Konuşmalar

Posta kutusundaki konuşmalar. CAHk7pQ2x9LmZ4 gibi bir konuşma id'si threads list, openemail inbox ya da openemail search komutundan gelir.

KomutNe yapar
openemail threads listBir klasördeki konuşmalardan bir sayfa listeleyin, en yeniden eskiye. Her satır yalnızca bir id'dir. --folder, --query, --label-ids, --sort, --date-from, --date-to ve --from-contacts daraltır ve sıralar
openemail threads get <id>Bir konuşmayı içindeki her mesajla, en eskiden yeniye, etiketleri ve okunmamış durumuyla birlikte okuyun
openemail threads update <id>Bir konuşmayı --read ile okundu ya da --no-read ile okunmadı olarak işaretleyin ve --add-label-ids ile --remove-label-ids kullanarak her birinde en fazla 50 olmak üzere etiket koyun ya da kaldırın
openemail threads trash <id>Bir konuşmayı tek adımda gelen kutusundan, istenmeyen postadan, ertelenenlerden ve arşivden çıkarıp Çöp kutusuna taşıyın. Onay ister
openemail threads snooze <id> <wake-at>Bir konuşmayı 2026-10-01T09:00:00Z gibi gelecekteki bir ana kadar gizleyin. Yeniden ertelemek uyanma zamanını değiştirir
openemail threads unsnooze <id>Ertelenmiş bir konuşmayı şimdi gelen kutusuna geri getirin ve uyanma zamanını temizleyin
openemail threads list-attachments <id> <message-id>Bir mesajın eklerini listeleyin; her birinin baytları content içinde satır içi base64 olarak bulunur
  • --folder varsayılan olarak inbox olur ve bir etiket id'si olarak eşleştirilir; bu yüzden sent, archive, spam, trash, draft, snoozed, starred ve unread çalışır, bin trash olarak okunur ve USER_RECEIPTS gibi bir kullanıcı etiketi id'si de çalışır. Hiçbir şeyle eşleşmeyen bir klasör hata değil, boş bir sayfa döndürür.
  • --query uygulamanın arama sözdizimini alır ve in:anywhere her klasörde arar. --label-ids daha da daraltır, çünkü bir konuşmanın klasörü ve verdiğiniz her id'yi taşıması gerekir. --date-from ve --date-to her konuşmanın en yeni mesajını okur ve iki uç da dahildir.
  • threads get, gönderilmemiş taslak yanıtları isDraft: true olarak işaretli biçimde mesajların arasına katar ve bir taslak id'sini de açar.
  • threads update için --read, --no-read ya da eklenecek veya kaldırılacak bir etiket gerekir. Kaldırmalar eklemelerden önce uygulanır. Hiçbir etiketi göstermeyen bir etiket id'si label_not_found ile reddedilir ve konuşmada hiçbir şey değişmez, bu yüzden önce etiketi oluşturun. TRASH, SNOOZED ve DRAFT, label_not_directly_settable ile reddedilir: threads trash ve threads snooze kullanın.
  • threads trash hiçbir şeyi silmez ve konuşma threads get ile okunabilir kalır, ancak hiçbir komut bir konuşmayı Çöp kutusundan geri çıkarmaz. Ertelenmiş bir konuşmayı Çöp kutusuna atmak uyanmasını da iptal eder.
  • threads snooze, <wake-at> değerini olduğu gibi gönderir, bu yüzden ona Z ya da bir saat farkı içeren gelecekteki bir ISO 8601 anı verin, çünkü ikisini de içermeyen bir zaman sunucunun saat diliminde okunur. 3h gibi bir gecikme geçersiz diye reddedilir. openemail snooze --until 3h ise bir gecikme alır. Konuşmalar saatlik bir taramayla, en fazla yaklaşık bir saat geç ve her zaman gelen kutusuna uyanır.
  • threads list-attachments her dosyayı tek bir yanıtta eksiksiz döndürür. Mesaj id'sini threads get çıktısındaki messages içinden alın. Saklanan baytlar bulunamadığında content boş bir dizedir, bu yüzden kodunu çözmeden önce uzunluğunu kontrol edin.

Taslaklar

Posta kutusunda kaydedilmiş, gönderilmemiş mesajlar. Bir taslak id'si draft- ile başlar.

KomutNe yapar
openemail drafts listTaslaklardan bir sayfa listeleyin, en son kaydedilen önce. Her satır yalnızca bir id'dir ve --query bunlar içinde arar
openemail drafts get <id>Bir taslağın alıcılarını, konusunu, gövdesini, göndereni, yanıt verdiği konuşmayı ve eklerinin adlarını okuyun
openemail drafts create--to, --cc, --bcc, --subject, --html, --text, --from ve --thread-id ile, hepsi isteğe bağlı, yeni bir taslak kaydedin
openemail drafts update <id>Kayıtlı bir taslaktaki alanları değiştirin. Vermediğiniz bir alan değerini korur
openemail drafts delete <id>Bir taslağı kalıcı olarak silin. Çöp kutusuna gitmez. Onay ister
  • drafts list --query konuda, gönderende ve gövdenin başında arar ve asla taslakların dışına çıkmaz. older_than:30d ve diğer tarih işleçleri taslağın en son ne zaman kaydedildiğini okur; to:, cc: ve bcc: bir taslakta hiçbir şeyle eşleşmez.
  • Bir taslak DRAFT etiketli bir konuşma olarak saklanır, bu yüzden threads get onu açar ve openemail inbox draft taslakları listeler. drafts get, update ve delete sıradan bir konuşma id'sini 404 ile reddeder.
  • Yalın bir openemail drafts create boş bir taslak kaydeder. Yalnızca uzunluklar denetlenir: en fazla 998 karakterlik bir konu ve her biri en fazla 1,000,000 karakter olan --html ve --text; ikisi de verildiğinde --html tutulur. Ekler için bayrak yoktur.
  • drafts update gönderdiğiniz her alanı değiştirir. Bir liste kayıtlı olanın tamamının yerini alır, bu yüzden tek adresli --to diğerlerini düşürür ve bir güncelleme taslağın ek listesini boşaltır.
  • --thread-id bir taslağın yanıt verdiği konuşmayı kaydeder, ancak taslak yine de kendi başına bir konuşma olarak saklanır.
  • drafts create komutunu yeniden çalıştırmak ikinci bir taslak kaydeder, çünkü eş güçlülük anahtarı almaz. İçinde virgül olan bir görünen ad iki bozuk alıcıya bölünür, bu yüzden virgülü kullanmayın.
  • openemail send --draft <id> --to <address> bir taslağı gönderir. Gövde taslaktan gelir; --subject vermediğiniz sürece konu da öyle. Alıcılar ise sizin adlandırdıklarınızdır. Bir gövde, --template ya da --translate ile birlikte kullanılamaz.

Etiketler

Bir konuşmanın taşıyabileceği etiketler. Bir kullanıcı etiketi id'si USER_ ve ardından oluşturulduğu adın büyük harfe çevrilmiş, her boşluk dizisi _ yapılmış hâlidir; bu yüzden Big Clients, USER_BIG_CLIENTS olur.

KomutNe yapar
openemail labels listÇalışma alanının kullanıcı etiketlerini ada göre sıralı listeleyin; her biri rengi, threadCount, createdAt ve updatedAt değerleriyle
openemail labels list-colorsUygulamanın sunduğu paleti listeleyin: on dört düz renk ve yedi gradyan. value, renk olarak verilecek değerdir
openemail labels get <id>Tek bir kullanıcı etiketini okuyun; id'si büyük küçük harfe duyarlı olarak eşleştirilir
openemail labels create --name <value>Bir kullanıcı etiketi oluşturun. --color-background-color ona bir renk verir
openemail labels update <id>Bir etiketi yeniden adlandırın ya da yeniden renklendirin. Id aynı kalır, onu taşıyan konuşmalar da öyle
openemail labels delete <id>Bir etiketi silin ve onu taşıyan her konuşmadan kaldırın. Onay ister
  • Bir id, yeniden adlandırmadan sonra bile asla değişmez, bu yüzden adları değil id'leri saklayın.
  • INBOX, STARRED ve UNREAD gibi sistem etiketleri listelenmez, değiştirilemez ve silinemez, ancak threads update bunları alır. Bunlardan biri için labels get 404 verir.
  • Bir çalışma alanında en fazla 50 kullanıcı etiketi olabilir. Büyük küçük harf ayrımı yapılmadan başka bir etiketin zaten kullandığı bir ad label_name_taken ile reddedilir.
  • Bir renk, #3B82F6 gibi bir onaltılık değer ya da gradient:sunset gibi bir gradyan belirtecidir. --label-color rengin tamamını JSON olarak alır ve --label-color null onu temizler.
  • Bir etiket çalışma alanına aittir, bu yüzden onu yeniden adlandırmak, yeniden renklendirmek ya da silmek, alandaki herkes için değiştirir.
  • labels delete geri alınamaz. Aynı adla yeniden bir etiket oluşturmak aynı id'yi verir, ancak konuşmalar onu geri almaz. labels get içindeki threadCount değeri kaç konuşmanın onu kaybedeceğini söyler.

Posta komutları bunları nasıl kullanır

Posta komutuNe çalıştırır
inbox [folder]Bir sayfa için threads list, ardından her konuşma için altışar altışar threads get
search <query...>threads list --query, ardından her konuşma için threads get
read <thread-id>threads get, ardından --no-mark-read vermediğiniz sürece threads update --read
reply <thread-id>Alıcılar, konu ve gönderen adres için threads get, ardından konuşmanın içine emails send
archive <thread-id...>threads update --add-label-ids ARCHIVE --remove-label-ids INBOX
unarchive <thread-id...>threads update --add-label-ids INBOX --remove-label-ids ARCHIVE
star, unstar <thread-id...>STARRED ekleyen ya da kaldıran threads update
mark read, unread <thread-id...>threads update --read ya da --no-read
trash <thread-id...>threads trash
snooze <thread-id...> --until <when>threads snooze; 3h gibi bir gecikme önce bir ana dönüştürülür
unsnooze <thread-id...>threads unsnooze
label add, remove <thread-id...>threads update --add-label-ids ya da --remove-label-ids
send --draft <id>emails send --draft-id
  • Bir posta komutu birkaç konuşma id'si alır ve her biri için rapor verir; --json ile { results, succeeded, failed } yazdırır. Bu sayfadaki bir komut ise tek bir id alır ve API'nin döndürdüğünü yazdırır.
  • openemail inbox, en son kimin yazdığını ve konuyu göstermek için listelediği her konuşmayı okur. threads list ise sayfa başına tek bir istek yapar ve yalnızca id'leri yazdırır; bir işlem hattının ihtiyacı da budur.
  • openemail read bir HTML mesajını metne dönüştürür ve konuşmayı okundu olarak işaretler. threads get konuşmayı API'nin döndürdüğü gibi yazdırır ve hiçbir şeyi değiştirmez.

Örnekler

Bir konuşmayı tek bir istekle okundu olarak işaretleyin, arşivleyin ve etiketleyin; mark read, archive ve label add bunun için üç istek yapardı:

Tek güncelleme
openemail threads update CAHk7pQ2x9LmZ4 --read --add-label-ids ARCHIVE,USER_RECEIPTS --remove-label-ids INBOX --json

Bir etiket oluşturun ve eşleşen her konuşmayı onun altına yerleştirin. Bir kanala yönlendirildiğinde --all her satıra bir JSON nesnesi yazdırır:

Bir aramayı etiketleyin
openemail labels create --name Receipts --color-background-color gradient:meadowopenemail threads list --query "in:anywhere subject:receipt newer_than:1y" --all | jq -r .id | xargs openemail label add --label USER_RECEIPTS

Bir mesajdan tek bir dosya kaydedin. Mesaj id'leri threads get çıktısındaki messages içindedir:

Bir eki kaydedin
openemail threads get CAHk7pQ2x9LmZ4 --json | jq -r ".messages[].id"openemail threads list-attachments CAHk7pQ2x9LmZ4 message_4c1b257a --json | jq -r '.[] | select(.filename == "invoice.pdf") | .content' | base64 --decode > invoice.pdf

Bir taslak yazın, değiştirin, geri okuyun, sonra gönderin:

Taslak, sonra gönderim
DRAFT=$(openemail drafts create --to [email protected] --subject "Engine notes for Thursday" --html "<p>Agenda below.</p>" --json | jq -r .id)openemail drafts update "$DRAFT" --to [email protected],[email protected]openemail drafts get "$DRAFT"openemail send --draft "$DRAFT" --from [email protected] --to [email protected],[email protected]

Kimsenin 30 gündür kaydetmediği taslakları temizleyin. Deneme çalıştırması her DELETE isteğini göndermeden yazdırır ve --yes onayı yanıtlar:

Eski taslaklar
openemail drafts list --query older_than:30d --all | jq -r .id > stale.txtxargs -n 1 openemail drafts delete --dry-run < stale.txtxargs -n 1 openemail drafts delete --yes < stale.txt

Paletten bir gradyan seçin, değişikliği önizleyin, uygulayın ve daha sonra rengi yeniden kaldırın:

Bir etiketi yeniden renklendirin
openemail labels list-colors --json | jq -r '.[] | select(.kind == "gradient") | .value'openemail labels update USER_RECEIPTS --name "Receipts 2026" --color-background-color gradient:aurora --dry-runopenemail labels update USER_RECEIPTS --name "Receipts 2026" --color-background-color gradient:auroraopenemail labels update USER_RECEIPTS --label-color null

Kapsamlar ve doğrulama kodları

KapsamKomutlar
threads:readthreads list, get ve list-attachments
threads:writethreads update, trash, snooze ve unsnooze
drafts:readdrafts list ve get
drafts:writedrafts create, update ve delete
labels:readlabels list, list-colors ve get
labels:writelabels create, update ve delete

Eksik bir kapsam 4 çıkış koduyla durur. Bu komutların hiçbiri, ne tarayıcı oturumuyla ne de API anahtarıyla, doğrulama kodu istemez.

Bazı adreslerle sınırlı bir oturum ya da anahtar yalnızca onlara teslim edilen konuşmaları görür; diğer her konuşma, hiç yokmuş gibi 404 olur. Etiketler çalışma alanına aittir, bu yüzden yine her etiketi görür, ancak threadCount yalnızca görebildiği konuşmaları sayar.

Sayfalar, onaylar ve deneme çalıştırmaları

  • threads list, drafts list ve labels list tek bir sayfa okur; --limit aksini söylemedikçe 25, en fazla 100. --cursor bir sayfanın yazdırdığı imleçten devam eder. Bir konuşma imleci verildiği sıradaki düzeni korur, bu yüzden onunla aynı filtreleri gönderin.
  • --all her sayfayı okur ve --max <n> o kadar öğeden sonra durur. Bir kanala yönlendirildiğinde ya da --ndjson ile her satıra bir JSON nesnesi, --json ile tek bir { items, hasMore, nextCursor } belgesi yazdırır.
  • hasMore, son sayfa olduğu anlaşılan bir sayfada true olabilir ve bir sonraki çağrı o zaman hiç öğe döndürmez. Siz sayfalar arasında gezinirken yeni posta alan bir konuşma imlecin önüne geçer ve sonraki sayfalarda dönmez; bu sırada kaydedilen bir taslak da öyle.
  • threads trash, drafts delete ve labels delete onay ister. Gözetimsiz çalışırken, yani --json, --no-input ile ya da terminal olmadan, --yes vermediğiniz sürece 2 çıkış koduyla durur ve hiçbir şeyi değiştirmez.
  • --dry-run bir komutun göndereceği isteği kimlik bilgisi gizlenmiş olarak yazdırır ve göndermeden ya da onay istemeden 0 koduyla çıkar. --json ile { dryRun, request } yazdırır.

JSON gövdeleri ve bir alanı temizleme

--data gövdenin tamamını JSON olarak alır: satır içi, @path ile bir dosyadan ya da - ile stdin'den; ayrıca verdiğiniz bir bayrak kendi anahtarını geçersiz kılar.

Boş bir bayrak değeri bir kullanım hatasıdır, bu yüzden boş bir değerle temizlenen bir alan bunun yerine --data üzerinden verilir. --label-color null bir etiketin rengini temizler.

Terminal
openemail drafts update draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8 --data '{"from":""}'openemail drafts update draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8 --data '{"threadId":""}'openemail drafts update draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8 --data '{"to":[]}'openemail drafts create --data @draft.json --subject "Overrides the file"

İlki taslağı gönderen olmadan kaydeder, ikincisi onu yanıt verdiği konuşmadan ayırır, üçüncüsü de alıcılarını temizler.

Tüm bayraklar

Terminal
openemail threads --helpopenemail threads list --helpopenemail drafts create --help --json

openemail <namespace> <verb> --help her bağımsız değişkeni ve bayrağı türüyle, çağrının gerektirdiği kapsamları, yöntemini ve yolunu, ne döndürdüğünü ve API başvurusundaki notları gösterir. Aynı yardımı veri olarak almak için --json ekleyin.

Gelen kutunuz,
kendi kurallarınızla.

İşletmeler, yapay zekâ, ajanlar ve kişisel e-posta için e-posta altyapısı. Ölçek, gizlilik ve denetim için kuruldu. E-postanın ilk günden sahip olması gereken her şey.

OpenEmail

İşletmeler, yapay zekâ, ajanlar ve kişisel e-posta için e-posta altyapısı. Ölçek, gizlilik ve denetim için kuruldu. E-postanın ilk günden sahip olması gereken her şey.

© 2026 OpenEmail. Tüm hakları saklıdır.