taolib.testing.email_service.providers#
邮件提供商层。
Submodules#
Classes#
提供商故障转移管理器。 |
|
Mailgun 邮件提供商。 |
|
邮件提供商协议。 |
|
提供商健康状态。 |
|
提供商发送结果。 |
|
SendGrid 邮件提供商。 |
|
Amazon SES 邮件提供商。 |
Package Contents#
- class taolib.testing.email_service.providers.ProviderFailoverManager(providers: list[tuple[taolib.testing.email_service.providers.protocol.EmailProviderProtocol, int]], max_consecutive_failures: int = 3, cooldown_seconds: int = 60)#
提供商故障转移管理器。
按优先级排序提供商,自动在主提供商失败时切换到备用提供商。 每个提供商独立跟踪健康状态,失败超过阈值后进入冷却期。
- _states: list[_ProviderState]#
- _max_failures = 3#
- _cooldown_seconds = 60#
- async send(email: taolib.testing.email_service.models.email.EmailDocument) taolib.testing.email_service.providers.protocol.SendResult#
通过可用提供商发送邮件,自动故障转移。
- 参数:
email -- 邮件文档
- 返回:
发送结果
- 抛出:
AllProvidersFailedError -- 所有提供商均失败
- async send_bulk(emails: list[taolib.testing.email_service.models.email.EmailDocument]) list[taolib.testing.email_service.providers.protocol.SendResult]#
批量发送邮件。
- 参数:
emails -- 邮件文档列表
- 返回:
发送结果列表
- get_provider_statuses() list[taolib.testing.email_service.providers.protocol.ProviderHealthStatus]#
获取所有提供商状态。
- 返回:
提供商健康状态列表
- class taolib.testing.email_service.providers.MailgunProvider(api_key: str, domain: str)#
Mailgun 邮件提供商。
通过 Mailgun HTTP API 发送邮件。
- _api_key#
- _domain#
- _client#
- async send(email: taolib.testing.email_service.models.email.EmailDocument) taolib.testing.email_service.providers.protocol.SendResult#
通过 Mailgun API 发送邮件。
- async send_bulk(emails: list[taolib.testing.email_service.models.email.EmailDocument]) list[taolib.testing.email_service.providers.protocol.SendResult]#
批量发送(逐封发送)。
- async check_health() taolib.testing.email_service.providers.protocol.ProviderHealthStatus#
检查 Mailgun 可用性。
- _build_form_data(email: taolib.testing.email_service.models.email.EmailDocument) dict#
构建 Mailgun 表单数据。
- class taolib.testing.email_service.providers.EmailProviderProtocol#
Bases:
Protocol邮件提供商协议。
所有邮件服务提供商必须实现此协议。
- async send(email: taolib.testing.email_service.models.email.EmailDocument) SendResult#
发送单封邮件。
- 参数:
email -- 邮件文档
- 返回:
发送结果
- async send_bulk(emails: list[taolib.testing.email_service.models.email.EmailDocument]) list[SendResult]#
批量发送邮件。
- 参数:
emails -- 邮件文档列表
- 返回:
发送结果列表
- async check_health() ProviderHealthStatus#
检查提供商健康状态。
- 返回:
健康状态
- class taolib.testing.email_service.providers.ProviderHealthStatus#
提供商健康状态。
- last_check: datetime.datetime | None = None#
- class taolib.testing.email_service.providers.SendResult#
提供商发送结果。
- class taolib.testing.email_service.providers.SendGridProvider(api_key: str, sender_email: str | None = None, sender_name: str | None = None)#
SendGrid 邮件提供商。
通过 SendGrid v3 Mail Send API 发送邮件。
- _api_key#
- _sender_email = None#
- _sender_name = None#
- _client#
- async send(email: taolib.testing.email_service.models.email.EmailDocument) taolib.testing.email_service.providers.protocol.SendResult#
通过 SendGrid API 发送邮件。
- async send_bulk(emails: list[taolib.testing.email_service.models.email.EmailDocument]) list[taolib.testing.email_service.providers.protocol.SendResult]#
批量发送(逐封发送)。
- async check_health() taolib.testing.email_service.providers.protocol.ProviderHealthStatus#
检查 SendGrid 可用性。
- _build_payload(email: taolib.testing.email_service.models.email.EmailDocument) dict#
构建 SendGrid v3 API 请求体。
- class taolib.testing.email_service.providers.SESProvider(region: str, access_key_id: str, secret_access_key: str)#
Amazon SES 邮件提供商。
通过 Amazon SES v2 HTTP API 发送邮件。 需要配置 AWS 凭证和区域。
- _region#
- _access_key_id#
- _secret_access_key#
- _endpoint#
- _client#
- async send(email: taolib.testing.email_service.models.email.EmailDocument) taolib.testing.email_service.providers.protocol.SendResult#
通过 SES API 发送邮件。
使用简化的 SES v2 SendEmail API。 生产环境建议使用 aiobotocore 以获得完整的 AWS 签名支持。
- async send_bulk(emails: list[taolib.testing.email_service.models.email.EmailDocument]) list[taolib.testing.email_service.providers.protocol.SendResult]#
批量发送(逐封发送)。
- async check_health() taolib.testing.email_service.providers.protocol.ProviderHealthStatus#
检查 SES 可用性。
- _build_payload(email: taolib.testing.email_service.models.email.EmailDocument) dict#
构建 SES v2 请求体。