تخطَّ إلى المستندات
Python

openemail.sending

كل دالّة في مساحة الأسماء هذه: توقيعها ومعلماتها وما تُرجعه ومثال عليها.

الدوالّ

How mail leaves the workspace: the two lanes it travels in, transactional for app mail and broadcast for newsletters, each with its bounce and complaint numbers, the switch that resumes a paused lane, and the dedicated IPs of a workspace that bought one.

sending.list_streams()

List the sending lanes

الصلاحياتemails:read
التوقيع
def list_streams(    *,    api_key: str | None = None,    timeout: float | None = None,) -> SendingStreamListResource

Returns the two lanes mail travels in, transactional for app mail such as password resets, receipts and codes, and broadcast for newsletters, each with its state and its numbers for the last 7 days: recipients, bounced and complained, the two rates, and the limits the broadcast lane is held to. The lanes have their own queues and their own reputation, so a newsletter never holds up or harms app mail.

The broadcast lane pauses itself when more than 4% of its recipients bounced or more than 0.2% reported the mail as spam over those 7 days, once it reached enough recipients to judge. A paused lane says when and why in pausedAt and pausedReason, and app mail keeps going out. The count starts again when a lane is resumed, which resumedAt gives.

المعلمات

api_keystr

Overrides the client's API key for this call only.

timeoutfloat

Seconds this call may take, the response included, before it raises OpenEmailNetworkError with is_timeout. It overrides the client's timeout for this call, and 0 turns the limit off.

يُرجع

SendingStreamListResource, a dict with one SendingStreamResource per lane in data: stream, status, pausedAt, pausedReason, resumedAt, window and limits.

مثال

from openemail import openemail lanes = openemail.sending.list_streams() for lane in lanes['data']:    print(        lane['stream'],        lane['status'],        lane['window']['bounceRate'],        lane['window']['complaintRate'],    )

ملاحظات

  • Only the broadcast lane pauses. The transactional lane is always 'active'.

  • A GET is retried automatically on network failure and on 408, 500, 502, 503 and 504 responses, up to the client's max_retries, and on a 429 only when it carries a Retry-After of a minute or less.

متاح أيضًا في

API
GET /sending/streams
TypeScript
sending.listStreams()
Ruby
sending.list_streams
PHP
sending->listStreams
Go
Sending.ListStreams
Java
sending().listStreams
C#
Sending.ListStreamsAsync
CLI
openemail sending list-streams

sending.resume_stream()

Resume a paused lane

الصلاحياتdomains:write
التوقيع
def resume_stream(    stream: SendStream,    *,    api_key: str | None = None,    timeout: float | None = None,) -> SendingStreamResource

Resumes the broadcast lane after it was paused for too many bounces or complaints, as Resume does on the Analytics page of the app. Broadcasts and messages that were on hold continue at once, and the 7 day count starts again from now, so clean the audience first: a lane resumed onto the same list pauses again.

Only the workspace owner may do it: an API key acts for the owner, and an access token that acts for a member is 403 owner_only.

المعلمات

streamSendStreamمطلوب

The lane to resume, 'broadcast'. The transactional lane never pauses.

api_keystr

Overrides the client's API key for this call only.

timeoutfloat

Seconds this call may take, the response included, before it raises OpenEmailNetworkError with is_timeout. It overrides the client's timeout for this call, and 0 turns the limit off.

يُرجع

SendingStreamResource, now with status 'active' and resumedAt set.

مثال

from openemail import openemail lane = openemail.sending.resume_stream('broadcast') print(lane['status'], lane['resumedAt'])

ملاحظات

  • With an OAuth access token it asks for a verification code: until the app has verified one, it raises OpenEmailApiError with status 403, code step_up_required and is_step_up_required set. An API key is never asked.

  • A lane that is not paused is 409 stream_not_paused.

  • The SDK does not retry it.

متاح أيضًا في

API
POST /sending/streams/{stream}/resume
TypeScript
sending.resumeStream()
Ruby
sending.resume_stream
PHP
sending->resumeStream
Go
Sending.ResumeStream
Java
sending().resumeStream
C#
Sending.ResumeStreamAsync
CLI
openemail sending resume-stream

sending.list_dedicated_ips()

List dedicated IPs

الصلاحياتdomains:read
التوقيع
def list_dedicated_ips(    *,    api_key: str | None = None,    timeout: float | None = None,) -> DedicatedIpListResource

Returns the dedicated sending IPs of the workspace, bought as an add-on with billing.start_add_on_checkout. A new IP is warmed up over several weeks: warmupPercent says how far it is, and until it reaches 100 part of the mail still leaves through the shared IPs, so nothing is held back while it warms. status is 'warming' until then and 'ready' after.

A workspace without the add-on gets an empty data list and sends through the shared IPs.

المعلمات

api_keystr

Overrides the client's API key for this call only.

timeoutfloat

Seconds this call may take, the response included, before it raises OpenEmailNetworkError with is_timeout. It overrides the client's timeout for this call, and 0 turns the limit off.

يُرجع

DedicatedIpListResource, a dict with one DedicatedIpResource per IP in data: ip, status, pool, poolStatus, warmupPercent, assignedAt, readyAt and checkedAt.

مثال

from openemail import openemail addresses = openemail.sending.list_dedicated_ips() for address in addresses['data']:    print(address['ip'], address['status'], f'{address["warmupPercent"]}%')

ملاحظات

  • The warm-up is read from the sending service every few minutes, and checkedAt says when.

  • A GET is retried automatically on network failure and on 408, 500, 502, 503 and 504 responses, up to the client's max_retries, and on a 429 only when it carries a Retry-After of a minute or less.

متاح أيضًا في

API
GET /sending/dedicated-ips
TypeScript
sending.listDedicatedIps()
Ruby
sending.list_dedicated_ips
PHP
sending->listDedicatedIps
Go
Sending.ListDedicatedIPs
Java
sending().listDedicatedIps
C#
Sending.ListDedicatedIpsAsync
CLI
openemail sending list-dedicated-ips

sending.get_dedicated_ip()

Read a dedicated IP

الصلاحياتdomains:read
التوقيع
def get_dedicated_ip(    ip: str,    *,    api_key: str | None = None,    timeout: float | None = None,) -> DedicatedIpResource

Returns one dedicated IP of the workspace with its status and how far its warm-up has come.

المعلمات

ipstrمطلوب

The IP address, as list_dedicated_ips returns it, such as '203.0.113.24'.

api_keystr

Overrides the client's API key for this call only.

timeoutfloat

Seconds this call may take, the response included, before it raises OpenEmailNetworkError with is_timeout. It overrides the client's timeout for this call, and 0 turns the limit off.

يُرجع

DedicatedIpResource with ip, status, pool, poolStatus, warmupPercent, assignedAt, readyAt and checkedAt.

مثال

from openemail import openemail address = openemail.sending.get_dedicated_ip('203.0.113.24') print(address['status'], address['warmupPercent'])

ملاحظات

  • An IP that does not belong to the workspace is a 404 resource_not_found.

  • A GET is retried automatically on network failure and on 408, 500, 502, 503 and 504 responses, up to the client's max_retries, and on a 429 only when it carries a Retry-After of a minute or less.

متاح أيضًا في

API
GET /sending/dedicated-ips/{ip}
TypeScript
sending.getDedicatedIp()
Ruby
sending.get_dedicated_ip
PHP
sending->getDedicatedIp
Go
Sending.GetDedicatedIP
Java
sending().getDedicatedIp
C#
Sending.GetDedicatedIpAsync
CLI
openemail sending get-dedicated-ip