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 threadveopenemail draftçoğul adlar kadar iyi çalışır.openemail labelskomutunun tekil biçimi yoktur:openemail label, konuşmalara etiket koyan posta komutudur.- Fiiller alışılmış takma adları alır:
listiçinls,getiçinshowveview,createiçinnewveadd,updateiçinedit,deleteiçinrm,delveremove. - Her bayrak
openemail <namespace> <verb> --helpiçindedir, örneğinopenemail 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.
| Komut | Ne yapar |
|---|---|
| openemail threads list | Bir 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 |
--foldervarsayılan olarakinboxolur ve bir etiket id'si olarak eşleştirilir; bu yüzdensent,archive,spam,trash,draft,snoozed,starredveunreadçalışır,bintrasholarak okunur veUSER_RECEIPTSgibi 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.--queryuygulamanın arama sözdizimini alır vein:anywhereher klasörde arar.--label-idsdaha da daraltır, çünkü bir konuşmanın klasörü ve verdiğiniz her id'yi taşıması gerekir.--date-fromve--date-toher konuşmanın en yeni mesajını okur ve iki uç da dahildir.threads get, gönderilmemiş taslak yanıtlarıisDraft: trueolarak işaretli biçimde mesajların arasına katar ve bir taslak id'sini de açar.threads updateiçin--read,--no-readya da eklenecek veya kaldırılacak bir etiket gerekir. Kaldırmalar eklemelerden önce uygulanır. Hiçbir etiketi göstermeyen bir etiket id'silabel_not_foundile reddedilir ve konuşmada hiçbir şey değişmez, bu yüzden önce etiketi oluşturun.TRASH,SNOOZEDveDRAFT,label_not_directly_settableile reddedilir:threads trashvethreads snoozekullanın.threads trashhiçbir şeyi silmez ve konuşmathreads getile 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 onaZya da bir saat farkı içeren gelecekteki bir ISO 8601 anı verin, çünkü ikisini de içermeyen bir zaman sunucunun saat diliminde okunur.3hgibi bir gecikme geçersiz diye reddedilir.openemail snooze --until 3hise 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-attachmentsher dosyayı tek bir yanıtta eksiksiz döndürür. Mesaj id'sinithreads getçıktısındakimessagesiçinden alın. Saklanan baytlar bulunamadığındacontentboş 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.
| Komut | Ne yapar |
|---|---|
| openemail drafts list | Taslaklardan 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 --querykonuda, gönderende ve gövdenin başında arar ve asla taslakların dışına çıkmaz.older_than:30dve diğer tarih işleçleri taslağın en son ne zaman kaydedildiğini okur;to:,cc:vebcc:bir taslakta hiçbir şeyle eşleşmez.- Bir taslak
DRAFTetiketli bir konuşma olarak saklanır, bu yüzdenthreads getonu açar veopenemail inbox drafttaslakları listeler.drafts get,updatevedeletesıradan bir konuşma id'sini 404 ile reddeder. - Yalın bir
openemail drafts createboş bir taslak kaydeder. Yalnızca uzunluklar denetlenir: en fazla 998 karakterlik bir konu ve her biri en fazla 1,000,000 karakter olan--htmlve--text; ikisi de verildiğinde--htmltutulur. Ekler için bayrak yoktur. drafts updategönderdiğiniz her alanı değiştirir. Bir liste kayıtlı olanın tamamının yerini alır, bu yüzden tek adresli--todiğerlerini düşürür ve bir güncelleme taslağın ek listesini boşaltır.--thread-idbir taslağın yanıt verdiği konuşmayı kaydeder, ancak taslak yine de kendi başına bir konuşma olarak saklanır.drafts createkomutunu 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;--subjectvermediğiniz sürece konu da öyle. Alıcılar ise sizin adlandırdıklarınızdır. Bir gövde,--templateya da--translateile 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.
| Komut | Ne 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-colors | Uygulamanı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,STARREDveUNREADgibi sistem etiketleri listelenmez, değiştirilemez ve silinemez, ancakthreads updatebunları alır. Bunlardan biri içinlabels get404 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_takenile reddedilir. - Bir renk,
#3B82F6gibi bir onaltılık değer ya dagradient:sunsetgibi bir gradyan belirtecidir.--label-colorrengin tamamını JSON olarak alır ve--label-color nullonu 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 deletegeri alınamaz. Aynı adla yeniden bir etiket oluşturmak aynı id'yi verir, ancak konuşmalar onu geri almaz.labels getiçindekithreadCountdeğeri kaç konuşmanın onu kaybedeceğini söyler.
Posta komutları bunları nasıl kullanır
| Posta komutu | Ne ç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;
--jsonile{ 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 listise 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 readbir HTML mesajını metne dönüştürür ve konuşmayı okundu olarak işaretler.threads getkonuş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ı:
openemail threads update CAHk7pQ2x9LmZ4 --read --add-label-ids ARCHIVE,USER_RECEIPTS --remove-label-ids INBOX --jsonBir 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:
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_RECEIPTSBir mesajdan tek bir dosya kaydedin. Mesaj id'leri threads get çıktısındaki messages içindedir:
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.pdfBir taslak yazın, değiştirin, geri okuyun, sonra gönderin:
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:
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.txtPaletten bir gradyan seçin, değişikliği önizleyin, uygulayın ve daha sonra rengi yeniden kaldırın:
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 nullKapsamlar ve doğrulama kodları
| Kapsam | Komutlar |
|---|---|
| threads:read | threads list, get ve list-attachments |
| threads:write | threads update, trash, snooze ve unsnooze |
| drafts:read | drafts list ve get |
| drafts:write | drafts create, update ve delete |
| labels:read | labels list, list-colors ve get |
| labels:write | labels 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 listvelabels listtek bir sayfa okur;--limitaksini söylemedikçe 25, en fazla 100.--cursorbir 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.--allher sayfayı okur ve--max <n>o kadar öğeden sonra durur. Bir kanala yönlendirildiğinde ya da--ndjsonile her satıra bir JSON nesnesi,--jsonile 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 deletevelabels deleteonay ister. Gözetimsiz çalışırken, yani--json,--no-inputile ya da terminal olmadan,--yesvermediğiniz sürece2çıkış koduyla durur ve hiçbir şeyi değiştirmez.--dry-runbir komutun göndereceği isteği kimlik bilgisi gizlenmiş olarak yazdırır ve göndermeden ya da onay istemeden0koduyla çıkar.--jsonile{ 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.
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
openemail threads --helpopenemail threads list --helpopenemail drafts create --help --jsonopenemail <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.