Belgelere geç
CLI

E-posta gönderme ve izleme

`emails` komutlarıyla postayı gönderin, toplu gönderin, çevirin, zamanlayın ve iptal edin, ardından `tracking` ile teslimini, açılmalarını ve tıklamalarını izleyin.

Genel bakış

emails ad alanı, gönderim API'sinin komut hâlidir; SDK'daki openemail.emails nesnesinin her yöntemi için bir komut. Her biri bir uç noktayı çağırır ve döndürdüğünü yazdırır. tracking ad alanı, gönderdiğiniz postadaki açılmaları ve tıklamaları okur. openemail emails yerine openemail email de çalışır.

Buradaki her komut, tarayıcıdan ya da bir API anahtarıyla açılmış bir oturum ve iki kapsamdan birini gerektirir: gönderme, çevirme, iptal etme ve yeniden zamanlama için emails:send, yalnızca okuyan her şey için emails:read.

Hangi gönderim komutunu kullanmalı

openemail send, Posta sayfasındaki elle yazılmış komuttur ve emails send üzerinden gönderir. Terminal başındaki bir kişi için yapılmıştır: --from vermediğinizde gönderen adresi seçer, gövdeyi bir dosyadan, stdin'den ya da düzenleyicinizden okur, dosyaları yoluyla ekler ve bir şey gönderilmeden önce onaylamanız için bir özet gösterir. openemail emails send ise istek gövdesini her alan için bir bayrak olarak alır ve hiçbir şey sormaz; bu da tam olarak ne gönderdiğini bilen bir betiğe uyar.

sendemails send
--from <address>--data içermedikçe --to gibi zorunludur. send bunu atlayabilir ve sizin için bir adres seçer
-f, --body-file <path>Gövde için dosya bayrağı yoktur. --html "$(cat body.html)" verin ya da isteğin tamamını --data @email.json ile verin
-a, --attach <path>--attachments, her biri bir filename ve base64 content ya da Dosyalar'da zaten bulunan bir dosyanın fileId değerini taşıyan bir JSON dosya dizisi
--at <when>--scheduled-at <when>, bir ISO 8601 anı ya da PT1H veya P2D gibi bir süre. send ayrıca 10m, 2h ve 1d gibi kısa gecikmeleri de alır
--undo <seconds>--cancellable-for-seconds <n>, 0 ile 900 arası
--translate <language>--translate '{"to":"de"}'; ayrıca from, includeOriginal ve subject alır
--template <id> --props <json>--template '{"id":"welcome","props":{"name":"Ada"}}'; bir version da sabitleyebilir
--draft <id>--draft-id <id>
--thread <id>--thread-id <id>
--tag <key=value>--tags <key=value>, tekrarlanarak ya da bir JSON nesnesi olarak

Yalnızca emails send içinde tek bir gönderim için açılmaları ya da tıklamaları kapatan --tracking, --signature, özel başlıklar için --headers, dosyaları eklemek ile onlara bağlantı vermek arasında seçim yapmak için --attachment-delivery ve gövdenin tamamını JSON olarak satır içi, @path ile bir dosyadan ya da - ile stdin'den almak için --data bulunur.

İkisi farklı biter. send, e-posta failed olarak döndüğünde 1 koduyla çıkar. emails send ise API yanıt verdiği her durumda 0 koduyla çıkar, bu yüzden yazdırdığı çıktıdaki status değerine bakın.

Tüm emails komutları

send, send-batch, translate, cancel ve reschedule için emails:send gerekir. list, get, list-events ve get-tracking için emails:read gerekir. Bir e-posta id'si, bir gönderimin döndürdüğü gibi msg_ ve ardından 24 onaltılık karakterdir.

KomutNe yapar
openemail emails send --from <value> --to <a,b>Tek bir e-postayı şimdi gönderin, --cancellable-for-seconds ile bir geri alma penceresi boyunca bekletin ya da --scheduled-at ile zamanlayın. Gövde --html, --text ya da ikisi, kayıtlı bir --template ya da kayıtlı bir --draft-id olur
openemail emails send-batch <emails>Tek bir istekte en fazla 100 bağımsız e-posta gönderin; bir dosyadaki, satır içi ya da - ile stdin'deki bir JSON dizisinden. Her öğe emails send gövdesi biçimindedir ve kendi başına başarılı ya da başarısız olur
openemail emails translate --to <value>Çevrilmiş bir gönderimin --subject, --html ya da --text için ne teslim edeceğini önizleyin. Hiçbir şey saklanmaz ya da gönderilmez ve bir yapay zekâ işlemi harcar
openemail emails listGönderilmiş e-postalardan bir sayfa, en yeniden eskiye, --status, --from ya da --broadcast-id ile daraltılmış
openemail emails get <id>Her alıcının kendi durumu, hatası ve teslim zamanıyla gönderilmiş tek bir e-posta; izlendiyse tam izleme raporuyla birlikte
openemail emails list-events <id>Bir gönderimin olay izi, en eskiden yeniye: kabul edildi, zamanlandı, gönderildi, teslim edildi, geri döndü, şikâyet edildi, açıldı, tıklandı ve diğerleri
openemail emails get-tracking <id>Bir gönderimin etkileşim raporu: toplamları, izlenen her kopya için bir kayıt ve tıklamalarıyla birlikte yeniden yazılmış her bağlantı
openemail emails cancel <id>Kuyruktaki ya da zamanlanmış bir e-postayı gitmeden önce durdurun. Onay ister
openemail emails reschedule <id> <scheduled-at>Kuyruktaki ya da zamanlanmış bir e-postayı bir ISO 8601 anına ya da PT30M gibi bir süre sonrasına, bir saniyeden 365 güne kadar ileriye taşıyın

Tüm tracking komutları

Beşi de emails:read gerektirir. tracking get, list-opens ve list-clicks, bir mesajın sahip olduğu iki id'den birini alır: gönderiminin döndürdüğü msg_ id'si ya da tracking list ile webhook yüklerinin taşıdığı tmsg_ izleme id'si.

KomutNe yapar
openemail tracking listBir zaman aralığında gönderilmiş izlenen mesajlardan bir sayfa, en yeniden eskiye, her biri tam raporuyla. --opened ve --clicked daraltır, --no-opened ise kimsenin açmadıklarını tutar. --days ya da --minutes aksini söylemedikçe aralık 30 gündür
openemail tracking get-statsBir etkileşim panelinin arkasındaki sayılar: izlenen, açılan ve tıklanan mesajlar, açılma ve tıklama oranları, --grain dilimlerinde bir zaman serisi ve en çok öne çıkan bağlantılar, posta istemcileri ve ülkeler
openemail tracking get <id>Tek bir mesajın etkileşim raporu, emails get-tracking komutunun döndürdüğü belgenin aynısı
openemail tracking list-opens <id>Bir mesajın açılma sayısının arkasındaki tek tek açılmalar, en yeniden eskiye, her biri human, proxy ya da machine olarak işaretli. --include-machine sayılmayan isabetleri ekler
openemail tracking list-clicks <id>Bir mesajın bağlantılarındaki tek tek tıklamalar, en yeniden eskiye, her birinin özgün url değeriyle. --include-machine bağlantı tarayıcılarını ve birleştirilmiş tekrarları ekler

tracking list ve get-stats, web uygulamasında yazılan posta ve MCP araçlarının ya da asistanın gönderdiği posta dahil, posta kutusunun gönderdiği izlenen her mesajı kapsar; emails list ise API'nin oluşturduğu gönderim kayıtlarını tutar. Gönderim kaydı olmayan bir raporda sendId değeri null olur.

Örnekler

Bir betikten kendi eş güçlülük anahtarınızla gönderin. Aynı --idempotency-key ile yeniden çalıştırmak, ikinci bir e-posta göndermek yerine ilk e-postayı replayed: true ile yazdırır.

Bir betikten gönderme
openemail emails send \  --from 'Acme Billing <[email protected]>' \  --to [email protected] \  --subject 'Your September invoice' \  --html '<p>The invoice is attached. Tell me if anything on it looks wrong.</p>' \  --attachments '[{"fileId":"file_6bb640f5b99e47deb758f1f5"}]' \  --tracking '{"opens":false}' \  --idempotency-key invoice:inv_2026_09_4192 \  --json | jq -r '.id + " " + .status'

Bir çeviriyi gitmeden önce bir kişiye okutun. Onaylanan metni --translate olmadan düz --subject ve --html olarak gönderin, yoksa ikinci kez çevrilir. --no-include-original vermediğiniz sürece çevrilmiş html, özgün metninizi zaten altında içerir.

Bir çeviriyi önizleyin, sonra gönderin
openemail emails translate --to de \  --subject 'Your September invoice' \  --html "$(cat invoice.html)" \  --json > preview.jsonjq -r .html preview.jsonopenemail emails send --from [email protected] --to [email protected] \  --subject "$(jq -r .subject preview.json)" \  --html "$(jq -r .html preview.json)"

Bir dosyadan toplu gönderim yapın. Komut, bazı öğeler başarısız olsa bile toplu gönderim işlendiği her durumda 0 koduyla çıkar, bu yüzden failed değerini ve her öğenin status değerini okuyun. Aynı anahtarla yeniden çalıştırmak, dizi sırasını koruduğu sürece giden öğeleri yeniden oynatır ve yalnızca geri kalanları gönderir.

receipts.json
[  { "from": "[email protected]", "to": "[email protected]", "subject": "Receipt 4192", "text": "Thanks for your order." },  { "from": "[email protected]", "to": "[email protected]", "subject": "Receipt 4193", "text": "Thanks for your order." }]
Toplu gönderimi yapın
openemail emails send-batch receipts.json --idempotency-key receipts:2026-09-27 --json > result.jsonjq '{ sent, failed }' result.jsonjq -r '.items[] | select(.status == "error") | "\(.index) \(.error.code)"' result.json

Bir e-postayı zamanlayın, taşıyın ve iptal edin. --yes, cancel komutunun istediği onayı yanıtlar; bir betik bunu yapamaz.

Zamanlama, taşıma ve iptal
ID=$(openemail send --from [email protected] --to [email protected] --subject "Standup notes" \  --body-file notes.md --at 2026-10-01T09:00:00Z --json | jq -r .id)openemail emails reschedule "$ID" 2026-10-01T13:00:00Zopenemail emails get "$ID" --json | jq -r '.status + " " + .scheduledAt'openemail emails cancel "$ID" --yes

Başarısız olan gönderimleri bulun ve birine ne olduğunu okuyun. --json olmadan bir kanala yönlendirildiğinde --all her satıra bir JSON nesnesi yazdırır.

Başarısız gönderimleri bulun
openemail emails list --status failed,partial --from [email protected] --all | jq -r .idopenemail emails get msg_3f9a1c07d2b84e6a9c5b1f20openemail emails list-events msg_3f9a1c07d2b84e6a9c5b1f20 --all --json | jq -r '.items[] | .createdAt + " " + .type'

Bir haftalık etkileşimi UTC+2 gece yarısında bölünen günler hâlinde okuyun, kimsenin açmadıklarını listeleyin ve tek bir mesajın her bağlantısındaki tıklamaları sayın.

Bir haftalık açılma ve tıklama
openemail tracking get-stats --days 7 --offset-minutes 120 --json | jq '{ tracked, openRate, clickRate }'openemail tracking list --no-opened --days 7 --all | jq -r .subjectopenemail tracking list-clicks msg_3f9a1c07d2b84e6a9c5b1f20 --all | jq -r .url | sort | uniq -c

Kapsamlar, kodlar ve onaylar

  • Bir tarayıcı oturumu kapsamları onay sayfasında ister ve openemail login --scopes emails:send,emails:read ikisini de önceden seçer. Kapsamı eksik olan bir komut 4 çıkış kodu ve insufficient_scope ile durur ve kapsamın adını verir.
  • 5 MB'tan fazla dosyayla send --attach önce onları Dosyalar'a yükler; bu da ayrıca files:write gerektirir.
  • Bu komutların hiçbiri doğrulama kodu istemez, bu yüzden bir tarayıcı oturumu onları bir API anahtarı gibi çalıştırır.
  • emails cancel iptal etmeden önce sorar ve --yes sizin yerinize yanıtlar. Gözetimsiz çalışırken --yes yoksa Refusing to run unattended. Pass --yes to confirm. iletisi ve 2 çıkış koduyla durur.
  • emails send, send-batch ve reschedule asla sormaz. send bir özet gösterir ve yalnızca bir terminalde sorar; --yes bunu da atlar.
  • --dry-run bir komutun göndereceği isteği yazdırır, hiçbir şey göndermez ve 0 koduyla çıkar. emails translate üzerinde bu hiçbir yapay zekâ işlemi harcamaz, emails cancel üzerinde ise hiçbir şey sormaz.

Sonuç sayfaları

emails list, emails list-events, tracking list, list-opens ve list-clicks tek bir sayfa okur. --limit boyutunu belirler: iki emails listesi için 1 ile 100 arası, varsayılan 25; üç tracking listesi için 1 ile 200 arası, varsayılan 50. --cursor bir sayfanın yazdırdığı imleçten devam eder.

  • --all her sayfayı okur ve öğeleri akış hâlinde verir: terminalde bir tablo, bir kanala yönlendirildiğinde ya da --ndjson ile her satıra bir JSON nesnesi.
  • --max <n> o kadar öğeden sonra durur ve --all anlamına gelir.
  • --json, --all dahil, tek bir { items, hasMore, nextCursor } belgesi yazdırır.
  • Sayfalama ofset ile değil imleçle yapılır, bu yüzden siz sayfalar arasında gezinirken gönderilen posta hiçbir satırı kaydırmaz ya da tekrarlamaz.

Bilmekte fayda var

  • Her çalıştırma kendi eş güçlülük anahtarını üretir ve bu anahtar o çalıştırmanın içindeki yeniden denemeleri kapsar. Bir gönderimi iki kez çalıştırmak, iki çalıştırma da aynı --idempotency-key değerini vermedikçe iki kez gönderir. Aynı anahtar farklı bir gövdeyle idempotency_key_reuse ve 7 çıkış koduyla reddedilir.
  • Yalnızca queued ve scheduled durumundaki posta iptal edilebilir ya da taşınabilir. Geri alma penceresi olmayan anlık bir gönderim istek içinde gider, bu yüzden id'sini elinize aldığınızda genellikle çok geçtir ve çağrı email_not_cancellable ve 6 çıkış koduyla biter.
  • İptal edilen bir e-posta iptal edilmiş kalır. Yeniden zamanlama yalnızca zamanı değiştirir; bir süre verildiğinde bu süre sunucunun isteği aldığı andan itibaren sayılır. Metni değiştirmek için iptal edip yeniden gönderin.
  • Üretilemeyen bir çeviri gönderimin tamamını reddeder ve hiçbir şey çevrilmeden gitmez. Çevrilmiş bir toplu gönderim, translate taşıyan en fazla 10 mesaj içerir.
  • Tükenmiş bir gönderim kotası, bir gönderimi ayın ilk gününe kadar send_quota_exceeded ile durdurur; tükenmiş bir yapay zekâ kotası da bir çeviriyi UTC gece yarısına kadar ai_quota_exceeded ile durdurur. İkisi de 8 çıkış koduyla biter.
  • Bir oe_test_ anahtarıyla gönderilen posta asla teslim edilmez. sent olarak görünür, transport değeri test olur ve asla izlenmez.
  • emails get-tracking ve tracking get, piksel ya da yeniden yazılmış bağlantı taşımayan bir mesaj için 404 ve 5 çıkış koduyla yanıt verir, çünkü izlenmemiş olmak açılmamış olmakla aynı şey değildir. İzleme, mesajın gönderildiği ayarı izler, bu yüzden sonradan açmak önceki postaya ulaşmaz.
  • Her sayı bir alt sınırdır. Posta istemcisi görselleri engelleyen bir okuyucu asla açılma olarak sayılmaz ve bir tıklama, okunduğunun bir açılmadan daha güçlü kanıtıdır.
  • list-opens ve list-clicks, hiçbir şeyin izlenmediği bir msg_ id'si için 404 döndürür, ancak bir tmsg_ id'sini verildiği gibi alır; bu yüzden bilinmeyen bir id boş bir liste olarak döner.
  • Bazı adreslerle sınırlı bir anahtar yalnızca o adreslerden gönderilen postayı görür; bütün bir alan adını tutan bir anahtar ise oradaki her adresi kapsar.

Tüm bayraklar

Bu sayfa en önemli bayrakları adlandırır. openemail <command> --help, bir komutun aldığı her bağımsız değişkeni ve bayrağı türüyle, gereken kapsamla, yöntemi ve yoluyla, ne döndürdüğüyle ve API başvurusundaki notlarla listeler. Aynı yardımı tek bir JSON belgesi olarak almak için --json ekleyin.

Terminal
openemail emails --helpopenemail emails send --helpopenemail tracking list-opens --help --json

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.