Dërgimi dhe gjurmimi i emailit
Dërgoni, dërgoni në batch, përktheni, planifikoni dhe anuloni postën me komandat `emails`, pastaj ndiqni dorëzimin, hapjet dhe klikimet e saj me `tracking`.
Përmbledhje
Hapësira e emrave emails është API-ja e dërgimit në formë komandash, nga një për çdo metodë të openemail.emails në SDK. Secila thërret një endpoint dhe shtyp atë që kthen. Hapësira e emrave tracking lexon hapjet dhe klikimet te posta që dërguat. openemail email funksionon në vend të openemail emails.
Çdo komandë këtu ka nevojë për një hyrje, me shfletues ose me një çelës API, dhe për një nga dy fushëveprime: emails:send për të dërguar, përkthyer, anuluar dhe riplanifikuar, dhe emails:read për gjithçka që vetëm lexon.
Cilin dërgim të përdorni
openemail send është komanda e shkruar me dorë te faqja Posta, dhe dërgon përmes emails send. Është bërë për një person në terminal: zgjedh adresën e dërgimit kur e lini jashtë --from, lexon trupin nga një skedar, stdin ose redaktori juaj, bashkëngjit skedarë sipas shtegut, dhe tregon një përmbledhje për konfirmim para se të niset ndonjë gjë. openemail emails send e merr trupin e kërkesës si flamuj, nga një për çdo fushë, dhe nuk pyet asgjë, gjë që i përshtatet një skripti që e di saktësisht çfarë dërgon.
| send | emails send |
|---|---|
| --from <address> | E detyrueshme, si --to, përveç nëse e mban --data. send mund ta lërë jashtë dhe të zgjedhë një adresë për ju |
| -f, --body-file <path> | Nuk ka flamur skedari për trupin. Jepni --html "$(cat body.html)", ose gjithë kërkesën te --data @email.json |
| -a, --attach <path> | --attachments, një array JSON skedarësh, secili me një filename dhe content në base64, ose me fileId të një skedari që është tashmë te Skedarët |
| --at <when> | --scheduled-at <when>, një çast ISO 8601 ose një kohëzgjatje si PT1H ose P2D. send pranon edhe vonesa të shkurtra si 10m, 2h dhe 1d |
| --undo <seconds> | --cancellable-for-seconds <n>, nga 0 deri në 900 |
| --translate <language> | --translate '{"to":"de"}', që pranon edhe from, includeOriginal dhe subject |
| --template <id> --props <json> | --template '{"id":"welcome","props":{"name":"Ada"}}', që mund të fiksojë edhe një version |
| --draft <id> | --draft-id <id> |
| --thread <id> | --thread-id <id> |
| --tag <key=value> | --tags <key=value>, i përsëritur, ose një objekt JSON |
Vetëm emails send ka --tracking për të fikur hapjet ose klikimet për një dërgim, --signature, --headers për header-a të personalizuar, --attachment-delivery për të zgjedhur mes bashkëngjitjes së skedarëve dhe lidhjes me to, dhe --data për gjithë trupin si JSON, në rresht, nga një skedar me @path ose nga stdin me -.
Të dyja përfundojnë ndryshe. send del me kodin 1 kur emaili kthehet failed. emails send del me kodin 0 sa herë që API u përgjigj, ndaj kontrolloni status te ajo që shtyp.
Çdo komandë emails
send, send-batch, translate, cancel dhe reschedule kërkojnë emails:send. list, get, list-events dhe get-tracking kërkojnë emails:read. Një id emaili është msg_ e ndjekur nga 24 karaktere hex, siç e kthen një dërgim.
| Komanda | Çfarë bën |
|---|---|
| openemail emails send --from <value> --to <a,b> | Dërgoni një email tani, mbajeni për një dritare zhbërjeje me --cancellable-for-seconds, ose planifikojeni me --scheduled-at. Trupi është --html, --text ose të dyja, një --template i ruajtur, ose një --draft-id i ruajtur |
| openemail emails send-batch <emails> | Dërgoni deri në 100 emaile të pavarura në një kërkesë, nga një array JSON në një skedar, në rresht, ose përmes stdin me -. Çdo element ka formën e trupit të emails send dhe ka sukses ose dështon më vete |
| openemail emails translate --to <value> | Shihni paraprakisht çfarë do të dorëzonte një dërgim i përkthyer, për --subject, --html ose --text. Asgjë nuk ruhet ose dërgohet, dhe shpenzon një veprim AI |
| openemail emails list | Një faqe emailesh të dërguara, më të rejat të parat, të ngushtuara me --status, --from ose --broadcast-id |
| openemail emails get <id> | Një email i dërguar me statusin, gabimin dhe kohën e dorëzimit të çdo marrësi, dhe raportin e plotë të gjurmimit kur është gjurmuar |
| openemail emails list-events <id> | Gjurma e ngjarjeve të një dërgimi, më të vjetrat të parat: pranuar, planifikuar, dërguar, dorëzuar, kthyer, ankuar, hapur, klikuar dhe të tjerat |
| openemail emails get-tracking <id> | Raporti i angazhimit të një dërgimi: totalet, një hyrje për çdo kopje të gjurmuar, dhe çdo lidhje e rishkruar me klikimet e saj |
| openemail emails cancel <id> | Ndaloni një email në radhë ose të planifikuar para se të niset. Ju kërkon konfirmim |
| openemail emails reschedule <id> <scheduled-at> | Zhvendosni një email në radhë ose të planifikuar në një çast ISO 8601, ose pas një kohëzgjatjeje si PT30M, nga një sekondë deri në 365 ditë përpara |
Çdo komandë tracking
Të pesat kërkojnë emails:read. tracking get, list-opens dhe list-clicks pranojnë cilëndo nga dy id-të që ka një mesazh: id-në msg_ që ktheu dërgimi i tij, ose id-në e gjurmimit tmsg_ që mbartin tracking list dhe payload-et e webhook-ëve.
| Komanda | Çfarë bën |
|---|---|
| openemail tracking list | Një faqe mesazhesh të gjurmuara të dërguara brenda një dritareje kohore, më të rejat të parat, secili me raportin e plotë. --opened dhe --clicked e ngushtojnë, dhe --no-opened mban ato që nuk i hapi askush. Dritarja është 30 ditë, përveç nëse --days ose --minutes thotë ndryshe |
| openemail tracking get-stats | Numrat pas një paneli angazhimi: mesazhet e gjurmuara, të hapura dhe të klikuara, normat e hapjes dhe të klikimit, një seri kohore në intervale --grain, dhe lidhjet, klientët e postës dhe vendet kryesore |
| openemail tracking get <id> | Raporti i angazhimit i një mesazhi, i njëjti dokument që kthen emails get-tracking |
| openemail tracking list-opens <id> | Hapjet individuale pas numrit të hapjeve të një mesazhi, më të rejat të parat, secila e shënuar human, proxy ose machine. --include-machine shton goditjet që nuk u numëruan |
| openemail tracking list-clicks <id> | Klikimet individuale te lidhjet e një mesazhi, më të rejat të parat, me url origjinale të secilës. --include-machine shton skanuesit e lidhjeve dhe përsëritjet e bashkuara |
tracking list dhe get-stats mbulojnë çdo mesazh të gjurmuar që dërgoi kutia postare, përfshirë postën e shkruar në aplikacionin web dhe postën e dërguar nga mjetet MCP ose asistenti, ndërsa emails list mban regjistrat e dërgimeve që krijoi API. Një raport pa regjistër dërgimi e ka sendId të caktuar në null.
Shembuj
Dërgoni nga një skript me një çelës idempotence tuajin. Ekzekutimi sërish me të njëjtin --idempotency-key shtyp emailin e parë me replayed: true në vend që të dërgojë një të dytë.
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'Lëreni një person ta lexojë përkthimin para se të niset. Dërgojeni tekstin e miratuar si --subject dhe --html të thjeshtë, pa --translate, përndryshe përkthehet për herë të dytë. html i përkthyer e mban tashmë origjinalin tuaj poshtë tij, përveç nëse jepni --no-include-original.
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)"Dërgoni një batch nga një skedar. Komanda del me kodin 0 sa herë që batch-i u përpunua, edhe kur disa elemente dështuan, ndaj lexoni failed dhe status e çdo elementi. Ekzekutimi sërish me të njëjtin çelës riluan elementet që u nisën dhe dërgon vetëm të tjerat, për sa kohë array-i ruan rendin e vet.
[ { "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." }]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.jsonPlanifikoni një email, zhvendoseni dhe anulojeni. --yes i përgjigjet konfirmimit që kërkon cancel, gjë që një skript nuk mund ta bëjë.
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" --yesGjeni dërgimet që dështuan dhe lexoni çfarë ndodhi me njërin. Kur dalja dërgohet në pipe pa --json, --all shtyp një objekt JSON për rresht.
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'Lexoni një javë angazhimi në ditë që ndahen në mesnatë UTC+2, listoni atë që nuk e hapi askush, dhe numëroni klikimet në çdo lidhje të një mesazhi.
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 -cFushëveprimet, kodet dhe konfirmimet
- Një hyrje me shfletues kërkon fushëveprime në faqen e miratimit, dhe
openemail login --scopes emails:send,emails:readi parazgjedh të dyja. Një komandë së cilës i mungon fushëveprimi ndalet me kodin e daljes4dheinsufficient_scope, dhe e emërton fushëveprimin. send --attachme më shumë se 5 MB skedarë i ngarkon ata fillimisht te Skedarët, gjë që kërkon edhefiles:write.- Asnjë nga këto komanda nuk kërkon kod verifikimi, ndaj një hyrje me shfletues i ekzekuton ashtu si një çelës API.
emails cancelpyet para se të anulojë, dhe--yespërgjigjet për ju. Pa mbikëqyrje dhe pa--yes, ndalet meRefusing to run unattended. Pass --yes to confirm.dhe kodin e daljes2.emails send,send-batchdhereschedulenuk pyesin kurrë.sendtregon një përmbledhje dhe pyet vetëm në terminal, dhe--yese kapërcen edhe këtë.--dry-runshtyp kërkesën që do të dërgonte një komandë, nuk dërgon asgjë dhe del me kodin0. Teemails translatekjo nuk shpenzon asnjë veprim AI, dhe teemails cancelnuk pyet asgjë.
Faqet e rezultateve
emails list, emails list-events, tracking list, list-opens dhe list-clicks lexojnë një faqe. --limit cakton madhësinë e saj, nga 1 deri në 100 me 25 si parazgjedhje për dy listat emails, dhe nga 1 deri në 200 me 50 si parazgjedhje për tri listat tracking. --cursor vazhdon nga kursori që shtypi një faqe.
--alllexon çdo faqe dhe i transmeton elementet: një tabelë në terminal, dhe një objekt JSON për rresht kur dalja dërgohet në pipe ose me--ndjson.--max <n>ndalet pas aq elementeve dhe nënkupton--all.--jsonshtyp një dokument të vetëm{ items, hasMore, nextCursor }, përfshirë me--all.- Faqet ndahen me kursor, jo me zhvendosje, ndaj posta e dërguar ndërsa shfletoni faqet nuk e zhvendos dhe nuk e përsërit kurrë një rresht.
Mirë të dihet
- Çdo ekzekutim krijon çelësin e vet të idempotencës, i cili mbulon riprovimet brenda atij ekzekutimi. Nëse e ekzekutoni një dërgim dy herë, ai dërgon dy herë, përveç nëse të dy ekzekutimet japin të njëjtin
--idempotency-key. I njëjti çelës me një trup tjetër refuzohet meidempotency_key_reusedhe kodin e daljes7. - Vetëm posta
queueddhescheduledmund të anulohet ose të zhvendoset. Një dërgim i menjëhershëm pa dritare zhbërjeje niset brenda kërkesës, ndaj kur ta keni id-në e tij zakonisht është tepër vonë, dhe thirrja përfundon meemail_not_cancellabledhe kodin e daljes6. - Një email i anuluar mbetet i anuluar. Riplanifikimi ndryshon vetëm kohën, e numëruar nga çasti kur serveri merr kërkesën në rastin e një kohëzgjatjeje, ndaj për të ndryshuar tekstin, anulojeni dhe dërgojeni sërish.
- Një përkthim që nuk mund të prodhohet e refuzon gjithë dërgimin, dhe asgjë nuk niset e papërkthyer. Një batch i përkthyer mban të shumtën 10 mesazhe që mbartin
translate. - Një kuotë dërgimi e shteruar e ndal një dërgim me
send_quota_exceededderi në ditën e parë të muajit, dhe një kuotë AI e shteruar e ndal një përkthim meai_quota_exceededderi në mesnatë UTC, të dyja me kodin e daljes8. - Posta e dërguar me një çelës
oe_test_nuk dorëzohet kurrë. Lexohet sisent, metransporttë caktuar nëtest, dhe nuk gjurmohet kurrë. emails get-trackingdhetracking getpërgjigjen me 404, kodi i daljes5, për një mesazh që nuk mbarti as piksel as lidhje të rishkruar, sepse i pagjurmuar nuk është njësoj si i pahapur. Gjurmimi ndjek cilësimin me të cilin u dërgua mesazhi, ndaj ndezja e tij më vonë nuk e arrin postën e mëparshme.- Çdo numër është një minimum. Një lexues klienti i postës i të cilit bllokon imazhet nuk numërohet kurrë si hapje, dhe një klikim është provë më e fortë leximi se një hapje.
list-opensdhelist-clickspërgjigjen me 404 për një idmsg_pa asgjë të gjurmuar, por e pranojnë një idtmsg_ashtu siç jepet, ndaj një id e panjohur kthehet si listë bosh.- Një çelës i kufizuar në disa adresa sheh vetëm postën e dërguar nga ato adresa, dhe një çelës që mban një domen të tërë mbulon çdo adresë në të.
Çdo flamur
Kjo faqe emërton flamujt që kanë më shumë rëndësi. openemail <command> --help liston çdo argument dhe flamur që merr një komandë, me llojin e tij, fushëveprimin që i duhet, metodën dhe shtegun, çfarë kthen dhe shënimet nga referenca e API-t. Shtoni --json për të njëjtën ndihmë si një dokument i vetëm JSON.
openemail emails --helpopenemail emails send --helpopenemail tracking list-opens --help --json