5 个版本 (3 个破坏性更新)
0.4.0 | 2024年1月15日 |
---|---|
0.3.1 | 2023年5月16日 |
0.3.0 | 2023年5月12日 |
0.2.0 | 2023年5月8日 |
0.1.0 | 2023年5月4日 |
#34 in 电子邮件
每月 67 次下载
135KB
1.5K SLoC
Mailjet API 的非官方封装器
Rust 对 Mailjet API 的封装
Mailjet 是一家提供发送电子邮件和短信服务的提供商,有关更多信息,请访问 https://www.mailjet.com/。
警告:此封装器不是官方的,Mailjet 不会提供任何支持。
入门
第一步是使用您的 API 密钥实例化一个 Mailjet 结构。
use mailjet_api_wrapper::Mailjet;
let mailjet = Mailjet::from_api_keys("your_api_key", "your_api_secret");
现在,API 中的每个路由都对应于您的 mailjet 对象中的一个函数,例如使用 message 路由。
use mailjet_api_wrapper::Mailjet;
use mailjet_api_wrapper::requests::MessageRequest;
let mailjet = Mailjet::from_api_keys("your_api_key", "your_api_secret");
let res = mailjet.message(&MessageRequest::default()).unwrap_or_default();
这些函数具有显式的名称,您可以在完整文档或直接在您的 IDE 中轻松找到它们。在多个路由具有相同名称的情况下,函数将使用动词作为前缀,如 _create
或 _update
。
简单路由
这些路由在 URL 中只有几个变量,没有参数,在 API 参考中看起来像 /message/{message_ID}
。在这种情况下,函数名将以 _from_*
结尾。
use mailjet_api_wrapper::Mailjet;
use mailjet_api_wrapper::requests::MessageRequest;
let mailjet = Mailjet::from_api_keys("your_api_key", "your_api_secret");
let res = mailjet.message_from_id(123456789).unwrap_or_default();
复杂路由
这些路由在 URL 末尾附加参数或具有 JSON 主体(例如 /message
或 /send
)。在这种情况下,您需要在将请求对象传递给函数之前构建请求对象。您可以在 requests
模块中找到它们。
use mailjet_api_wrapper::Mailjet;
use mailjet_api_wrapper::requests::MessageInformationRequest;
let mailjet = Mailjet::from_api_keys("your_api_key", "your_api_secret");
let request = MessageInformationRequest {
campaign_id: Some(544678796), // Corresponds to parameter CampaignID
..Default::default()
};
let res = mailjet.message_information(&request).unwrap_or_default();
混合路由
这些路由同时具有 URL 变量和 URL 参数或主体(例如 /contact
(PUT)),在这种情况下,函数接受 2+ 个参数,前一个是 URL 变量,最后一个参数是请求对象。
use mailjet_api_wrapper::Mailjet;
use mailjet_api_wrapper::requests::ContactRequest;
use mailjet_api_wrapper::data::ContactIdentifier;
let mailjet = Mailjet::from_api_keys("your_api_key", "your_api_secret");
let request = ContactRequest {
name: Some("New Name".to_string()), // Corresponds to parameter CampaignID
..Default::default()
};
let response = mailjet
.contact_update(
&ContactIdentifier::ContactEmail("[email protected]".to_string()),
&request,
)
.unwrap_or_default();
响应
每个返回 JSON 的路由都会构建一个响应对象。您可以在 responses
模块中找到它们。
use mailjet_api_wrapper::Mailjet;
use mailjet_api_wrapper::requests::MessageRequest;
let mailjet = Mailjet::from_api_keys("your_api_key", "your_api_secret");
let res = mailjet.message(&MessageRequest::default()).unwrap_or_default();
let obj = res.object.unwrap_or_default();
let count = obj.count; // Corresponds to Count response field
let data = obj.data; // Corresponds to Data response field
数据结构
请求和响应结构与 Mailjet 的 JSONs 相同,并且参数名称已从 PascalCase 字段名称转换为 rust 所要求的 snake_case 格式。每个 JSON 请求和响应都可以使用 serde 序列化和反序列化,因此您可以使用 serde_json 轻松构建具有 JSON 格式的对象。
有关 JSON 结构和参数的完整信息,请阅读 https://dev.mailjet.com/email/reference/。
示例:发送基本电子邮件
use mailjet_api_wrapper::{
data::{EmailAddress, Message},
requests::SendRequest,
Mailjet,
};
// Create mailjet client
let mailjet = Mailjet::from_api_keys("your_key", "your_secret");
// Create recipients
let to = EmailAddress::from_email("[email protected]");
let from = EmailAddress::from_email_and_name("[email protected]", "Mailjet Pilot");
// Create message
let mut message = Message::default();
message.to.push(to);
message.from = from;
message.html_part = "<h3>Dear passenger 1, welcome to <a href=\"https://www.mailjet.com/\">Mailjet</a>!</h3><br />May the delivery force be with you!".to_string();
message.text_part = "Dear passenger 1, welcome to Mailjet! May the delivery force be with you!".to_string();
message.subject = "Your email flight plan!".to_string();
// Create send request
let mut send_request = SendRequest::default();
send_request.sandbox_mode = Some(true); // You can remove this when sending for real
send_request.messages.push(message);
// Send emails
let response = mailjet.send(&send_request).unwrap_or_default();
特性
分类 | 特性 | 操作 |
---|---|---|
发送电子邮件 | - | ✅ 通过Send API v3.1发送电子邮件消息 ❌ 通过Send API v3发送电子邮件消息 |
消息 | - | ✅ 获取所有处理消息的详细信息 ✅ 获取特定处理消息的详细信息 ✅ 获取特定消息的事件历史记录 ✅ 获取所有消息的发送/大小/垃圾邮件信息 ✅ 获取特定消息ID的发送/大小/垃圾邮件信息 |
联系信息 | 联系信息 | ✅ 创建新的联系人 ✅ 获取所有联系人的列表 ✅ 获取特定联系人 ✅ 更新特定联系人 ✅ 删除联系人(GDPR) |
联系信息 | 联系人列表 | ✅ 创建新的联系人列表 ✅ 获取所有联系人列表的一般详细信息 ✅ 获取特定联系人列表的信息 ✅ 更新特定联系人列表 ✅ 删除联系人列表 |
联系信息 | 批量联系人管理 | ❌ 将一组联系人添加到/从选定联系人列表中 ❌ 将一组联系人添加到/从另一个列表中取消订阅或删除 ❌ 将一组联系人添加到/从特定联系人列表中 ❌ 使用上传的CSV联系人列表来管理联系人列表中的存在和订阅状态 ❌ 监控多个联系人的提交上传/更新请求 ❌ 监控一个列表到另一个列表的联系人提交上传/更新请求 ❌ 监控多个联系人提交到特定联系人列表的上传/更新请求 ❌ 查看CSV导入作业的状态 ❌ 更新或中止正在进行的联系人CSV导入作业 |
联系信息 | 联系人属性 | ❌ 创建新的联系人属性 ❌ 获取所有联系人和与其关联的属性值的信息 ❌ 获取与特定联系人相关的联系人属性值 ❌ 获取所有联系人属性的信息 ❌ 获取特定联系人属性的信息 ❌ 更新与特定联系人相关的联系人属性值 ❌ 更新现有联系人属性的设置 ❌ 删除与特定联系人相关的所有联系人属性值 ❌ 删除现有联系人属性 |
联系信息 | 订阅 | ❌ 将联系人添加到/从选定联系人列表中 ❌ 管理特定联系人列表的单个联系人订阅 ❌ 创建新的列表收件人 ❌ 获取特定联系人的所有联系人列表 ❌ 获取通过订阅小部件的所有注册请求的信息 ❌ 获取通过订阅小部件的特定注册请求的信息 ❌ 获取所有列表收件人的详细信息 ❌ 获取特定列表收件人的详细信息 ❌ 更新列表收件人的订阅状态 ❌ 删除列表收件人 |
联系信息 | 验证 | ❌ 开始联系人列表验证 ❌ 获取联系人列表验证作业当前状态 |
活动 | 草稿 | ❌ 创建新的活动草稿 ❌ 管理活动草稿电子邮件的内容 ❌ 获取所有活动草稿及其配置 ❌ 获取特定活动草稿及其配置详细信息 ❌ 获取活动草稿电子邮件的内容 ❌ 更新现有活动草稿 ❌ 获取活动草稿的发送计划 ❌ 安排活动草稿的发送 ❌ 更新活动草稿的发送计划 ❌ 取消安排的活动草稿的发送 ❌ 立即发送活动草稿 ❌ 查看活动草稿的发送状态 ❌ 为指定活动草稿发送测试邮件 |
活动 | 已发送活动 | ❌ 获取所有活动的详细信息 ❌ 获取特定活动的详细信息 ❌ 删除活动或将其标记为星标 |
细分 | - | ❌ 创建新的联系人细分公式 ❌ 获取所有现有细分列表 ❌ 获取现有联系人细分公式 ❌ 更新现有联系人细分公式 ❌ 删除现有联系人细分公式 |
模板 | - | ❌ 创建电子邮件模板 ❌ 创建电子邮件模板的内容 ❌ 获取所有电子邮件模板 ❌ 获取特定模板的配置设置 ❌ 获取电子邮件模板的内容 ❌ 更新电子邮件模板的配置设置 ❌ 更新电子邮件模板的内容 ❌ 删除电子邮件模板 |
统计 | - | ❌ 获取所有草稿、A/B 测试对象和/或已发送活动的通用细节和统计数据 ❌ 获取特定草稿、A/B 测试对象或已发送活动的信息 ❌ 获取按联系人分组的聚合统计数据 ❌ 获取特定联系人的聚合统计数据 ❌ 检索按收件人国家分组的聚合打开和点击统计数据 ❌ 获取按列表收件人分组的聚合统计数据 ❌ 获取特定列表收件人的聚合统计数据 ❌ 获取特定活动、联系人列表、API密钥或发送者电子邮件地址基于消息或事件的聚合统计数据 ❌ 获取活动中所有点击链接的聚合统计数据 ❌ 检索按收件人电子邮件服务提供商(ESP)聚合的统计数据 ❌ 获取所有点击链接的聚合统计数据 ❌ 按网络浏览器/电子邮件客户端分组获取打开或点击计数 |
消息事件 | - | ❌ 获取所有退订事件的列表 ❌ 获取特定退订事件的详细信息 ❌ 获取所有点击事件的列表 ❌ 获取所有打开事件的列表 ❌ 获取特定消息的打开事件详细信息 |
Webhook | - | ❌ 添加新的回调URL ❌ 获取所有回调URL的列表 ❌ 获取特定回调URL的配置 ❌ 更新现有回调URL的配置 ❌ 删除现有回调URL |
解析 | - | ❌ 创建新的解析路由实例 ❌ 获取所有解析路由实例的列表 ❌ 获取特定解析路由资源的配置详细信息 ❌ 更新现有解析路由实例 ❌ 删除现有解析路由实例 |
发送者地址和域 | 发送者 | ❌ 创建新的发送者电子邮件地址或域 ❌ 获取所有现有发送者电子邮件地址和域的列表 ❌ 获取特定发送者电子邮件地址或域的详细信息 ❌ 更新现有发送者电子邮件地址或域 ❌ 删除现有发送者电子邮件地址或域 ❌ 验证发送者电子邮件地址或域 |
发送者地址和域 | Metasender | ❌ 创建新的Metasender ❌ 获取所有Metasenders的列表 ❌ 获取特定的Metasender ❌ 更新现有的Metasender |
发送者地址和域 | DNS | ❌ 获取所有发送者域的SPF和DKIM设置 ❌ 获取特定发送者域的SPF和DKIM设置 ❌ 执行发送者域的DNS验证 |
设置 | API密钥配置 | ❌ 创建新的子账户API密钥 ❌ 获取所有API密钥及其配置设置 ❌ 获取特定API密钥的配置设置 ❌ 更新现有的API密钥 |
设置 | 账户设置 | ❌ 检索您的个人资料信息 ❌ 获取您的用户设置和活动的通用信息 ❌ 更新您的个人资料信息 ❌ 更新您的用户ID设置 |
发送短信 | - | ❌ 发送短信消息 |
短信消息 | - | ❌ 请求导出短信消息 ❌ 获取短信消息列表 ❌ 获取短信消息数量 ❌ 获取导出请求结果 ❌ 获取单个短信消息 |
依赖项
~8-17MB
~245K SLoC