Python
예약과 취소
`scheduledAt`, `emails.reschedule`, `emails.cancel`.
나중에 보내기
from datetime import datetime, timezone from openemail import openemailfrom openemail.types import EmailSend message: EmailSend = {'from': sender, 'to': recipient, 'subject': subject, 'text': text} openemail.emails.send({**message, 'scheduledAt': 'PT1H'})openemail.emails.send({**message, 'scheduledAt': datetime(2027, 1, 1, 9, 0, tzinfo=timezone.utc)})openemail.emails.send({**message, 'scheduledAt': '2027-01-01T09:00:00.000Z'})datetime, ISO-8601 시각, 또는 PT1H / P2D 같은 기간입니다. 최대 1년 뒤까지 가능하며 과거는 안 됩니다.
datetime은 UTC로 전송되며, 시간대 정보가 없는 naive 값은 astimezone이 읽는 방식대로 먼저 이 컴퓨터의 현지 시각으로 해석되므로, 시간대가 중요하다면 aware 값을 넘기세요. timedelta는 받지 않습니다. datetime.now(timezone.utc)에 더하거나 PT1H 같은 기간을 보내세요.
옮기기와 중단하기
from datetime import datetime, timedelta, timezone from openemail import openemailfrom openemail.types import EmailSend message: EmailSend = {'from': sender, 'to': recipient, 'subject': subject, 'text': text} queued = openemail.emails.send({**message, 'scheduledAt': 'PT1H'}) openemail.emails.reschedule(queued['id'], datetime.now(timezone.utc) + timedelta(days=1))openemail.emails.cancel(queued['id'])중단할 수 있는 것은 queued와 scheduled 메시지뿐이며, 그 이후 단계는 conflict_error입니다. 일부가 이미 누군가의 메일함에 들어가 있기 때문입니다. 이미 취소된 메시지를 취소하면 성공하고 아무것도 바뀌지 않습니다.
대신 실행 취소 시간 두기
from openemail import openemailfrom openemail.types import EmailSend message: EmailSend = {'from': sender, 'to': recipient, 'subject': subject, 'text': text} openemail.emails.send({**message, 'cancellableForSeconds': 30})예약된 메시지는 나가기 전까지 이미 취소할 수 있으므로 둘을 함께 쓸 수 없고, 서버가 이를 거부합니다. 즉시 발송에 실행 취소 시간을 두려면 이쪽을 쓰세요.
매개변수: 예약
scheduledAtdatetime | str- `emails.send`에서의 발송 시각입니다. `datetime`, ISO-8601 시각, 또는 `PT1H`나 `P2D` 같은 기간이며, 클라이언트가 전송용 문자열로 변환합니다. 최소 1초 뒤, 최대 365일 뒤까지 가능하고 어느 경계를 넘든 `scheduledAt`에 대한 `validation_error`입니다. 자연어는 받지 않는데, "다음 화요일"을 잘못 해석하면 되돌릴 수 없는 시각에 메시지가 나가기 때문입니다.
cancellableForSecondsint- 즉시 발송에 대한 실행 취소 시간입니다. 0에서 900까지의 integer이며 기본값은 0입니다. 0보다 큰 값은 `scheduledAt`과 함께 쓰면 거부되는데, 그쪽은 나가기 전까지 이미 취소할 수 있기 때문입니다. 이렇게 붙잡힌 메시지는 `scheduled`가 아니라 `queued`에 머뭅니다. 짧은 지연이 붙은 같은 연기 메커니즘입니다.
idstr필수- `msg_…` id이며, `emails.cancel`과 `emails.reschedule` 양쪽의 첫 번째 인자입니다. 둘 다 별도의 스코프가 아니라 `emails:send`를 필요로 하고, 둘 다 키 자신의 워크스페이스 안에서 id를 해석하므로 다른 워크스페이스에 속한 id는 존재한 적 없는 id와 똑같이 `not_found_error`입니다.
scheduled_atdatetime | str필수- `emails.reschedule`의 두 번째 인자인 새 시각입니다. 같은 규칙과 같은 1년 범위로 해석되며, 그 아래의 `PATCH /emails/{id}`가 바꾸는 유일한 값입니다. 기간은 서버가 읽는 시점을 기준으로 하므로, 재시도된 일정 변경은 처음보다 조금 뒤에 놓입니다. 더 뒤일 뿐 결코 더 앞은 아닙니다.
응답: EmailResource
objectLiteral['email']- 항상 `email`입니다. 두 호출 모두 확인 응답이 아니라 메시지 전체로 답하므로, 무엇이 바뀌었는지 보려고 다시 가져올 필요가 없습니다. `emails.send`는 여기에 `replayed`를 더한 같은 형태를 반환합니다.
idstr- `msg_…` 핸들입니다. 메시지가 존재하는 동안 변하지 않으며, 그 메시지에 대한 다른 모든 호출이 받는 id입니다.
statusEmailStatus- 취소 후에는 `cancelled`, 일정 변경 후에는 `scheduled`이며, 실행 취소 시간 때문에 `queued`에 머물러 있던 메시지도 일정 변경을 거치면 진짜 예약으로 바뀝니다. 옮기거나 중단할 수 있는 것은 `queued`와 `scheduled` 메시지뿐이고, 그 이후 단계는 `email_not_cancellable` 코드의 `conflict_error`입니다. 일부가 이미 누군가의 메일함에 들어가 있기 때문입니다.
scheduledAtstr | None- 메시지가 발송될 예정인 ISO 시각입니다. 둘이 하나의 메커니즘이므로 `scheduledAt` 발송뿐 아니라 실행 취소 시간에도 설정되며, 평범한 즉시 발송에서는 null입니다.
cancellableUntilstr | None- 취소가 더 이상 동작하지 않게 되는 시각이며, 두 지연 경로 모두에서 `scheduledAt`과 같은 시각입니다. 호출이 반환될 때쯤이면 이미 나가 있는 즉시 발송에서는 null입니다.
sentAtstr | None- 메시지가 실제로 나간 시각입니다. 대기 중에는 null이고, 취소된 메시지에서는 영원히 null입니다.
messageIdstr | None- RFC 5322의 Message-ID이며 MIME이 만들어지기 전까지는 null이므로, 이 두 호출이 다룰 수 있는 메시지에서는 항상 null입니다. API를 호출할 때 쓰는 값도 아니고, 이후 반송이 담고 오는 값도 아닙니다. 발송 서비스가 나가는 길에 헤더를 다시 씁니다.
threadIdstr | None- 이 메시지가 속한 스레드로, 요청에서 가져온 뒤 발송이 끝나면 전송 계층이 보고한 값으로 다시 쓰입니다. 답장이 아니면 null입니다.
transportEmailTransport | str | None- 바이트가 어떤 경로로 나갔는지이며, 발송 전에는 null이므로 취소나 일정 변경이 반환하는 모든 메시지에서 null입니다. 테스트 모드 발송은 `test`를 기록하며, 이 SDK가 아직 이름을 알지 못하는 전송 수단이 호환성을 깨지 않도록 유니온은 열려 있습니다.
attemptsint- 발송 과정이 이 행을 몇 번 선점했는지입니다. 성공한 발송이 아니라 선점이 값을 올리며, 아직 대기 중인 것은 0입니다.
lastErrorstr | None- 메시지에 기록된 마지막 실패이며, 실패한 것이 없으면 null입니다. 작업을 큐에 넣지 못한 지연 발송은 여기에 `Could not schedule: …`로 기록되고 `failed`로 옮겨지는데, 이것이 예약된 메시지가 아무도 요청하지 않았는데 취소 가능 상태에서 벗어나는 유일한 경로입니다.
fromstr- 메시지가 나가도록 인가된 주소로, 보낸 `from`을 소문자로 주소만 저장한 값입니다. 표시 이름은 여기서 버려지는데 `emails.list`의 `from_` 필터가 동등 비교를 하기 때문입니다.