Emailit Rust
The official Rust SDK for the Emailit Email API.
Requirements
- Rust 1.85+
- Tokio runtime
Installation
Add to your Cargo.toml:
[]
= "2"
= { = "1", = ["full"] }
Getting Started
use CreateEmailBaseOptions;
use ;
async
All service methods return strongly typed response structs with Option fields for flexible API responses.
Available Services
| Service | Property | Description |
|---|---|---|
| Emails | emailit.emails |
Send, list, get, cancel, retry emails |
| Domains | emailit.domains |
Create, verify, list, manage sending domains |
| API Keys | emailit.api_keys |
Create, list, manage API keys |
| Audiences | emailit.audiences |
Create, list, manage audiences |
| Subscribers | emailit.subscribers |
Add, list, manage subscribers in audiences |
| Templates | emailit.templates |
Create, list, publish email templates |
| Suppressions | emailit.suppressions |
Create, list, manage suppressed addresses |
| Email Verifications | emailit.email_verifications |
Verify email addresses |
| Email Verification Lists | emailit.email_verification_lists |
Create, list, get results, export |
| Webhooks | emailit.webhooks |
Create, list, manage webhooks |
| Contacts | emailit.contacts |
Create, list, manage contacts |
| Events | emailit.events |
List and retrieve events |
Usage
Emails
Send an email
use CreateEmailBaseOptions;
let email = new
.with_html;
let result = emailit.emails.send.await?;
println!;
println!;
Send with a template
use CreateEmailBaseOptions;
use HashMap;
use json;
let mut variables = new;
variables.insert;
variables.insert;
let email = new
.with_template
.with_variables;
let result = emailit.emails.send.await?;
Send with attachments
use ;
let email = new
.with_html
.with_attachments;
let result = emailit.emails.send.await?;
Schedule an email
let email = new
.with_html
.with_scheduled_at;
let result = emailit.emails.send.await?;
println!; // scheduled
Send with tracking
use ;
let email = new
.with_html
.with_tracking;
let result = emailit.emails.send.await?;
List emails
use ListEmailsParams;
let emails = emailit.emails.list.await?;
for email in &emails
if emails.has_more
Cancel / Retry
emailit.emails.cancel.await?;
emailit.emails.retry.await?;
Domains
use ;
// Create a domain
let domain = emailit.domains.create.await?;
println!;
// Verify DNS
let domain = emailit.domains.verify.await?;
// List all domains
let domains = emailit.domains.list.await?;
// Get a domain
let domain = emailit.domains.get.await?;
// Update a domain
let domain = emailit.domains.update.await?;
// Delete a domain
emailit.domains.delete.await?;
API Keys
use ;
// Create an API key
let key = emailit.api_keys.create.await?;
println!; // only available on create
// List all API keys
let keys = emailit.api_keys.list.await?;
// Get an API key
let key = emailit.api_keys.get.await?;
// Update an API key
emailit.api_keys.update.await?;
// Delete an API key
emailit.api_keys.delete.await?;
Audiences
use ;
// Create an audience
let audience = emailit.audiences.create.await?;
println!;
println!;
// List audiences
let audiences = emailit.audiences.list.await?;
// Get an audience
let audience = emailit.audiences.get.await?;
// Update an audience
emailit.audiences.update.await?;
// Delete an audience
emailit.audiences.delete.await?;
Subscribers
Subscribers belong to an audience, so the audience ID is always the first argument.
use ;
// Add a subscriber
let subscriber = emailit.subscribers.create.await?;
// List subscribers in an audience
let subscribers = emailit.subscribers.list.await?;
// Get a subscriber
let subscriber = emailit.subscribers.get.await?;
// Update a subscriber
emailit.subscribers.update.await?;
// Delete a subscriber
emailit.subscribers.delete.await?;
Templates
use ;
// Create a template
let template = emailit.templates.create.await?;
// List templates
let templates = emailit.templates.list.await?;
// Get a template
let template = emailit.templates.get.await?;
// Update a template
emailit.templates.update.await?;
// Publish a template
emailit.templates.publish.await?;
// Delete a template
emailit.templates.delete.await?;
Suppressions
use ;
// Create a suppression
let suppression = emailit.suppressions.create.await?;
// List suppressions
let suppressions = emailit.suppressions.list.await?;
// Get a suppression
let suppression = emailit.suppressions.get.await?;
// Update a suppression
emailit.suppressions.update.await?;
// Delete a suppression
emailit.suppressions.delete.await?;
Email Verifications
use VerifyEmailParams;
let result = emailit.email_verifications.verify.await?;
println!; // valid
println!; // 0.95
println!; // low
Email Verification Lists
use ;
// Create a verification list
let list = emailit.email_verification_lists.create.await?;
println!; // evl_abc123...
println!; // pending
// List all verification lists
let lists = emailit.email_verification_lists.list.await?;
// Get a verification list
let list = emailit.email_verification_lists.get.await?;
// Get verification results
let results = emailit.email_verification_lists.results.await?;
for result in &results
// Export results as XLSX
let response = emailit.email_verification_lists.export.await?;
write?;
Webhooks
use ;
// Create a webhook
let webhook = emailit.webhooks.create.await?;
println!;
// List webhooks
let webhooks = emailit.webhooks.list.await?;
// Get a webhook
let webhook = emailit.webhooks.get.await?;
// Update a webhook
emailit.webhooks.update.await?;
// Delete a webhook
emailit.webhooks.delete.await?;
Contacts
use ;
// Create a contact
let contact = emailit.contacts.create.await?;
println!;
// List contacts
let contacts = emailit.contacts.list.await?;
// Get a contact
let contact = emailit.contacts.get.await?;
// Update a contact
emailit.contacts.update.await?;
// Delete a contact
emailit.contacts.delete.await?;
Events
use ListEventsParams;
// List events
let events = emailit.events.list.await?;
for event in &events
// Get an event
let event = emailit.events.get.await?;
println!;
Webhook Events
The SDK provides webhook signature verification via standalone functions, plus header constants.
Verifying Webhook Signatures
use ;
let raw_body = r#"{"type":"email.delivered","data":{"email_id":"em_123"}}"#;
let signature = headers.get.unwrap;
let timestamp = headers.get.unwrap;
let secret = "your_webhook_signing_secret";
match verify_webhook_signature
You can disable replay protection by passing Some(0), or set a custom tolerance in seconds:
// Skip replay check
let event = verify_webhook_signature?;
// Custom 10-minute tolerance
let event = verify_webhook_signature?;
Available Event Types
Emails: email.accepted, email.scheduled, email.delivered, email.bounced, email.attempted, email.failed, email.rejected, email.suppressed, email.received, email.complained, email.clicked, email.loaded
Domains: domain.created, domain.updated, domain.deleted
Audiences: audience.created, audience.updated, audience.deleted
Subscribers: subscriber.created, subscriber.updated, subscriber.deleted
Contacts: contact.created, contact.updated, contact.deleted
Templates: template.created, template.updated, template.deleted
Suppressions: suppression.created, suppression.updated, suppression.deleted
Email Verifications: email_verification.created, email_verification.updated, email_verification.deleted
Email Verification Lists: email_verification_list.created, email_verification_list.updated, email_verification_list.deleted
Error Handling
The SDK uses a typed Error enum for all API errors:
use Error;
match emailit.emails.send.await
License
MIT -- see LICENSE for details.