Transmetime
`broadcasts.preview`, `send`, `list`, `list_all`, `iterate`, `get`, `list_recipients`, `list_all_recipients`, `iterate_recipients`, `get_recipient`, `stats`, `analytics` dhe `cancel`.
Çdo metodë
import time from openemail import openemailfrom openemail.types import BroadcastCreate draft: BroadcastCreate = { '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>', 'text': 'Hi {{firstName|there}}, here is what changed this month. Unsubscribe: {{unsubscribeUrl}}', 'tags': {'campaign': 'release-2026-09'},} reach = openemail.broadcasts.preview(draft)print(reach['recipients'], reach['unsubscribed'], reach['suppressed']) broadcast = openemail.broadcasts.send(draft) latest = openemail.broadcasts.get(broadcast['id'])while latest['status'] in ('scheduled', 'queued', 'sending'): time.sleep(5) latest = openemail.broadcasts.get(broadcast['id']) for copy in openemail.broadcasts.iterate_recipients(broadcast['id']): print(copy['email'], copy['status'], copy['opens'], copy['clicks']) bounced = openemail.broadcasts.list_recipients(broadcast['id'], filter='bounced')if bounced['items']: content = openemail.broadcasts.get_recipient(broadcast['id'], bounced['items'][0]['emailId']) print(content['subject'], content['bouncedAt']) stats = openemail.broadcasts.stats(broadcast['id'], grain='day')print(stats['totals']['opened'], stats['totals']['clicked'], stats['totals']['unsubscribed']) lately = openemail.broadcasts.stats(broadcast['id'], days=1)print(lately['window']['opened'] if lately['window'] else None) month = openemail.broadcasts.analytics(days=30)for row in month['broadcasts']: print(row['subject'], row['sent'], row['opened']) later = openemail.broadcasts.send({**draft, 'scheduledAt': 'P1D'})openemail.broadcasts.cancel(later['id']) history = openemail.broadcasts.list(audience_id=draft['audienceIds'][0])print(latest['status'], latest['counts']['sent'], len(history['items']))Një transmetim dërgon një mesazh te të gjithë në një ose më shumë audienca, si kopje më vete për çdo person. Çdo kopje ka saktësisht një marrës dhe as cc as bcc, ndaj askush nuk sheh se kujt tjetër i shkoi, dhe çdo kopje është një email i zakonshëm me id-në e vet msg_, ngjarje, gjurmim dhe webhook-e. list_recipients i rendit me atë që ndodhi me secilën. Kopjet nuk ruhen në dosjen Të dërguarat, sepse transmetimi është regjistrimi.
send kthehet menjëherë me transmetimin queued, ose scheduled kur jepni scheduledAt, dhe dërgimi vazhdon në sfond. send kërkon emails:send dhe audiences:read, preview kërkon audiences:read, list, list_all, iterate, get, list_recipients, list_all_recipients, iterate_recipients, get_recipient, stats dhe analytics kërkojnë emails:read, dhe cancel kërkon emails:send.
Çdo send mban një Idempotency-Key, tuajin përmes idempotency_key= ose një që e krijon SDK-ja, ndaj një riprovim pas një dështimi rrjeti përgjigjet me transmetimin që krijoi përpjekja e parë në vend që të dërgojë dy herë. preview, get, cancel dhe çdo lexim janë të sigurta për t’u përsëritur dhe riprovohen.
Fushat e bashkimit
subject, html dhe text plotësohen për çdo person nga kontakti i tij. {{firstName}} është fjala e parë e emrit të kontaktit, {{lastName}} pjesa tjetër, {{name}} emri i plotë, {{email}} adresa ku shkon kopja dhe {{unsubscribeUrl}} lidhja që e çregjistron.
Çdo fushë pranon një vlerë rezervë pas një vije, e përdorur kur kontakti nuk ka vlerë për të, ndaj {{firstName|there}} bëhet "there" për një kontakt të ruajtur pa emër. Vlerat maskohen në html, dhe çdo {{…}} tjetër lihet saktësisht siç është shkruar.
Jepni template në vend të html dhe text për të dërguar një shabllon të ruajtur. Të njëjtat pesë vlera i arrijnë si props, por vetëm props-et që shablloni deklaron, ndaj një shabllon që deklaron firstName e merr dhe një që nuk e deklaron nuk refuzohet kurrë për këtë. Gjithçka te template.props shkon njësoj në çdo kopje.
Çregjistrimi
Çdo kopje mban kokat e çregjistrimit me një klikim që i lejojnë një klienti poste të shfaqë butonin e vet të çregjistrimit, gjë që kërkojnë ofruesit e mëdhenj të kutive postare nga posta masive. Një trup html ose text që nuk e vendos vetë {{unsubscribeUrl}} merr një fundfaqe me një rresht me lidhjen. Një shabllon dërgohet saktësisht ashtu siç është, ndaj vendosni {{unsubscribeUrl}} në shabllon.
Çregjistrimi e shënon personin të çregjistruar në çdo audiencë ku shkoi ai transmetim, dhe AudienceContactResource.unsubscribedAt e tregon këtë te audiences.list_contacts. Ai mbetet në audiencë dhe në librin e adresave, audiencat e tjera nuk preken, dhe posta që i dërgohet një mesazh në herë vazhdon të dalë. Heqja nga audienca dhe shtimi sërish e regjistron përsëri.
Kush kapërcehet
Një transmetim arrin çdo kontakt në të paktën një nga audienceIds, një herë sado prej tyre ta mbajnë. Kapërcen një kontakt që është çregjistruar nga çdo prej atyre audiencave ku ndodhet, dhe një adresë në listën e bllokimit pas një kthimi ose ankese, ose sepse dikush e shtoi aty. Një kontakt i shtuar në një nga audiencat pas send, por para se dërgimi ta arrijë, përfshihet.
preview kthen të njëjtët numra pa dërguar: recipients, unsubscribed dhe suppressed. Një send që nuk do të arrinte askënd ngre 422 no_recipients.
I gjithë dërgimi krahasohet me dërgimet mujore të planit para se të shkruhet ndonjë gjë, ndaj një transmetim që kuota nuk e mbulon ngre 429 send_quota_exceeded dhe nuk lë asgjë pas. Çdo kopje numërohet si një dërgim.
Gjendja dhe ecuria
get i lexon counts drejtpërdrejt nga kopjet, ndaj pyeteni ndërsa një transmetim dërgon. status kalon nga scheduled ose queued te sending dhe ngulet te sent pasi çdo kopje e dorëzuar ka dalë ose ka dështuar. Mbetet sending sa kohë kopjet ende presin, edhe pasi completedAt thotë se u arrit personi i fundit. failed do të thotë se i gjithë transmetimi u ndal, dhe lastError tregon pse: nga adresa from nuk mund të dërgohet më, shablloni pushoi së zgjidhuri, plani mbaroi në mes të rrugës, vetë dërgimi vazhdoi të dështonte, ose nuk u shkrua dot asnjë kopje.
cancel ndal një transmetim që është scheduled, queued ose sending. Nuk shtohet askush tjetër dhe çdo kopje që pret ende anulohet, ndërsa kopjet që kanë dalë nuk mund të tërhiqen. Pasi ka dalë çdo kopje, cancel ngre 409 broadcast_not_cancellable, dhe anulimi i një transmetimi të anuluar e kthen atë ashtu siç është.
Kë arriti
list_recipients kthen një faqe me personat të cilëve u shkoi një transmetim, një rresht për kopje, të renditur sipas adresës, si një dict me items, hasMore dhe nextCursor. list_all_recipients i kalon të gjitha faqet në një listë të vetme dhe iterate_recipients jep një kopje në një kohë, duke marrë faqen tjetër vetëm kur cikli e kërkon. limit shkon nga 1 deri në 200 me parazgjedhje 50, dhe një cursor kthehet me të njëjtat filter dhe q.
| filter | Mban |
|---|---|
| pending | Kopje ende në radhë, të planifikuara ose duke u dërguar. |
| sent | Kopje që u nisën. |
| delivered | Kopje që serveri marrës i pranoi. |
| opened | Kopje të hapura të paktën një herë. |
| not_opened | Kopje të dërguara dhe kurrë të hapura. |
| clicked | Kopje me të paktën një klikim të gjurmuar. |
| bounced | Kopje që u kthyen. |
| complained | Kopje që personi i raportoi si spam. |
| failed | Kopje që dështuan ose u anuluan. |
| unsubscribed | Persona që u çregjistruan pasi u nis transmetimi. |
BROADCAST_RECIPIENT_FILTERS emërton çdo filtër, dhe q kërkon në adresë dhe emër, pa dallim mes shkronjave të mëdha dhe të vogla. Hapjet dhe klikimet lënë jashtë proxy-t e imazheve dhe skanerët e lidhjeve, dhe mbeten 0 kur transmetimi u nis me gjurmimin të fikur.
get_recipient(id, email_id) kthen një kopje: i njëjti rresht, plus subject, html dhe text saktësisht siç i mori ai person, me fushat e bashkimit të plotësuara dhe lidhjen e vet të çregjistrimit. HTML-ja është nga para se të shtohej gjurmimi i hapjeve dhe klikimeve. Një email_id që nuk është kopje e këtij transmetimi ngre 404 recipient_not_found, dhe një transmetim i panjohur ngre 404 broadcast_not_found.
stats kthen totalet dhe një seri. totals numëron kopjet sent, delivered, bounced, complained dhe failed, me pending për ato që ende presin, dhe personat që opened, clicked dhe unsubscribed, me opens dhe clicks si numërime ngjarjesh. series është e rrallë dhe fillon nga më e vjetra, një interval për çdo grain (minute, hour ose day, me parazgjedhje hour) në të cilin ndodhi diçka, i ndarë sipas offset_minutes në lindje të UTC. Ajo e numëron çdo person një herë, në momentin e parë kur i ndodhi, ndaj shuma përputhet me totalet.
Një çelës i kufizuar në adresa ose domene të caktuara arrin vetëm transmetimet e dërguara nga një adresë ose domen që mban. list, list_all dhe iterate i lënë jashtë të tjerat, dhe get, metodat e marrësve, stats dhe cancel ngrenë 404 broadcast_not_found për to.
Përgjigja: BroadcastResource
get dhe cancel kthejnë secila një të tillë, dhe send kthen një SentBroadcastResource, të njëjtat fusha plus replayed, që është True kur përgjigjja është transmetimi që krijoi një thirrje e mëparshme me të njëjtin çelës idempotence. list kthen një faqe me to, një dict me items, hasMore dhe nextCursor, nga më i riu, dhe list_all e iterate përshkojnë të gjitha faqet. preview kthen një BroadcastPreviewResource me audienceIds, recipients, unsubscribed dhe suppressed. list_recipients kthen një faqe me rreshta BroadcastRecipientResource, get_recipient një BroadcastRecipientContentResource dhe stats një BroadcastStatsResource.
idstr- Identifikuesi i qëndrueshëm, `brd_` i ndjekur nga 24 karaktere hex.
statusBroadcastStatus- `scheduled`, `queued`, `sending`, `sent`, `cancelled` ose `failed`. `BROADCAST_STATUSES` emërton secilën.
modeApiKeyMode- `live` ose `test`, sipas çelësit që e krijoi. Kopjet e një transmetimi testues shënohen të dërguara dhe nuk i dorëzohen askujt.
sourceEmailSource | str- Ku nisi: `api` për një çelës, `oauth` për një aplikacion të lidhur, `composer` për aplikacionin, `mcp` për një asistent.
audienceIdslist[str]- Audiencat ku u dërgua, secila një herë.
fromstr- Adresa nga e cila dërgohet çdo kopje.
subjectstr- Subjekti siç është shkruar, me fushat e bashkimit. Bosh kur subjektin e jep një shabllon.
countsBroadcastCounts- `recipients` është vlerësimi i marrë te `send`. `created` numëron kopjet e shkruara, `skipped` njerëzit e kapërcyer sepse adresa e tyre ishte e bllokuar deri atëherë, dhe `failedToQueue` njerëzit kopja e të cilëve nuk u shkrua dot. `queued`, `sending`, `sent`, `failed` dhe `cancelled` numërojnë kopjet sipas gjendjes në të cilën është secila tani.
lastErrorstr | None- Pse dështoi transmetimi, ose kopja më e fundit që nuk u shkrua dot dhe pse. `None` sa kohë nuk ka shkuar asgjë keq.
scheduledAtstr | None- ISO-8601 UTC, kur duhet të nisë dërgimi. `None` për një transmetim të dërguar menjëherë.
startedAtstr | None- ISO-8601 UTC, kur dërgimi arriti njerëzit e parë.
completedAtstr | None- ISO-8601 UTC, kur u arrit personi i fundit. Kopjet mund të presin ende të dalin pas kësaj.
cancelledAtstr | None- ISO-8601 UTC, kur `cancel` e ndali.
createdAtstr- ISO-8601 UTC, kur u thirr `send`. Përcakton rendin e listës.
updatedAtstr- ISO-8601 UTC, përditësohet ndërsa dërgimi ecën.
Përgjigjja: BroadcastRecipientResource
Çdo rresht i list_recipients, list_all_recipients dhe iterate_recipients. BroadcastRecipientContentResource, nga get_recipient, shton subject, html dhe text.
emailIdstr- Id-ja `msg_` e kopjes së këtij personi. `get_recipient` e lexon me përmbajtjen e saj dhe `emails.get` e lexon si email të dërguar.
contactIdstr | None- Kontakti te i cili shkoi, ose `None` kur kontakti është fshirë që atëherë.
emailstr- Adresa ku shkoi kopja.
namestr | None- Emri në kontakt.
statusstr- Gjendja e kopjes: `queued`, `scheduled`, `sending`, `sent`, `failed` ose `cancelled`.
sentAtstr | None- ISO-8601 UTC, kur u nis kopja.
deliveredAtstr | None- ISO-8601 UTC, kur serveri marrës e pranoi, `email.delivered` i parë.
bouncedAtstr | None- ISO-8601 UTC, kur u kthye, `email.bounced` i parë.
complainedAtstr | None- ISO-8601 UTC, kur personi e raportoi si spam, `email.complained` i parë.
failurestr | None- Pse dështoi kopja, nëse dështoi.
opensint- Hapjet e regjistruara, pa ato që krijojnë proxy-t e imazheve dhe skanerët. 0 kur gjurmimi ishte i fikur.
firstOpenAtstr | None- ISO-8601 UTC, hapja e parë.
clicksint- Klikimet e regjistruara në lidhje të gjurmuara, pa skanerët.
firstClickAtstr | None- ISO-8601 UTC, klikimi i parë.
unsubscribedAtstr | None- ISO-8601 UTC, kur ky person u çregjistrua nga një prej audiencave të transmetimit pasi ai u nis, përmes lidhjes së tij ose ndryshe.
Referencë
broadcasts.preview()Referenca e plotëbroadcasts.send()Referenca e plotëbroadcasts.list()Referenca e plotëbroadcasts.list_all()Referenca e plotëbroadcasts.iterate()Referenca e plotëbroadcasts.get()Referenca e plotëbroadcasts.list_recipients()Referenca e plotëbroadcasts.list_all_recipients()Referenca e plotëbroadcasts.iterate_recipients()Referenca e plotëbroadcasts.get_recipient()Referenca e plotëbroadcasts.stats()Referenca e plotëbroadcasts.analytics()Referenca e plotëbroadcasts.cancel()Referenca e plotë