Official client library for the GoodSender email API. Package: goodsender
importgoodsenderfromgoodsender.api.emails_apiimportEmailsApifromgoodsender.api.domains_apiimportDomainsApicfg=goodsender.Configuration(
host="https://api.goodsender.com",
access_token="YOUR_API_KEY",
)
api=goodsender.ApiClient(cfg)
emails=EmailsApi(api)
domains=DomainsApi(api)
req=goodsender.SendEmailRequest(
emails=[
goodsender.SendEmail(
var_from=goodsender.Address(email="sender@example.com"),
to=[goodsender.Address(email="recipient@example.com")],
subject="Hello",
text_content="Body",
)
]
)
res=emails.send_email(send_email_request=req)
print(f"sent={res.sent} declined={res.declined}")req=goodsender.TemplateEmailRequest(
var_from=goodsender.Address(email="sender@example.com"),
to=goodsender.Address(email="recipient@example.com"),
subject="Your OTP",
template=goodsender.TemplateEmailRequestTemplate(
template_id="otp_code", variables={"code": "123456"}
),
)
res=emails.send_template_email(template_email_request=req)
print(f"status={res.status}")res=domains.list_domains(limit=50)
fordinres.domains:
print(d)# Get all consent records for an addressres=emails.get_email_consent_status(email="user@example.com", domain="example.com")
print(f"entries={len(res)}")
# List all consents for a domainres=emails.list_email_consents(domain="example.com", limit=50)
print(f"emails={len(res.emailsor [])}")- API reference: https://goodsender.com/docs
- OpenAPI spec:
openapi/goodsender.yamlin this repo - Conformance tests:
tests/
- Regenerate from spec:
scripts/regen.sh(preservestests/,.github/, and hand-curated files per.regen-ignore) - Run conformance tests against local mock:
tests/run.sh mock - Run conformance against real dev API:
tests/run.sh dev(requirestests/.env.dev)
MIT — see LICENSE.