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 电子邮件

Download history 9/week @ 2024-06-29 57/week @ 2024-07-27 10/week @ 2024-08-03

每月 67 次下载

LGPL-3.0 或更高版本

135KB
1.5K SLoC

Building

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