欢迎使用Mailjet官方JavaScript SDK,它使用webpack
、babel
和es5
构建。
这可以在node或浏览器中使用。
查看官方Mailjet文档中的所有资源和JS代码示例。
注意:
如果在浏览器中使用,目前由于CORS限制,需要代理与Mailjet API通信。
另外,不要在前端代码中公开您的私有API密钥。
此库官方支持以下Node.JS
版本:
v12.x
使用以下代码安装SDK:
npm install node-mailjet
Mailjet Email API
使用您的公钥
和私钥
进行认证。
export MJ_APIKEY_PUBLIC='您的API密钥' export MJ_APIKEY_PRIVATE='您的API密钥' export MJ_API_TOKEN='您的API令牌'
注意:
对于SMS API
,授权基于Bearer令牌。
有关详细信息,请参阅自述文件中的SMS API部分。
接 下来,导入模块并初始化您的Mailjet客户端:
const Mailjet = require('node-mailjet');
对于EMAIL API
和SEND API
:
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC || '您的API密钥', apiSecret: process.env.MJ_APIKEY_PRIVATE || '您的API密钥' });
对于SMS API
:
const mailjet = new Mailjet({ apiToken: process.env.MJ_API_TOKEN || '您的API令牌' });
对于EMAIL API
和SEND API
,您可以使用静态方法apiConnect
:
const mailjet = Mailjet.apiConnect( process.env.MJ_APIKEY_PUBLIC, process.env.MJ_APIKEY_PRIVATE, { config: {}, options: {} } );
对于SMS API
,您可以使用静态方法smsConnect
:
const mailjet = Mailjet.smsConnect( process.env.MJ_API_TOKEN, { config: {}, options: {} } );
以下是如何发送电子邮件的示例:
const Mailjet = require('node-mailjet'); const mailjet = Mailjet.apiConnect( process.env.MJ_APIKEY_PUBLIC, process.env.MJ_APIKEY_PRIVATE, ); const request = mailjet .post('send', { version: 'v3.1' }) .request({ Messages: [ { From: { Email: "pilot@mailjet.com", Name: "Mailjet Pilot" }, To: [ { Email: "passenger1@mailjet.com", Name: "passenger 1" } ], Subject: "Your email flight plan!", TextPart: "Dear passenger 1, welcome to Mailjet! May the delivery force be with you!", HTMLPart: "<h3>Dear passenger 1, welcome to <a href=\"https://www.mailjet.com/\">Mailjet</a>!</h3><br />May the delivery force be with you!" } ] }) request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
要实例化库,您可以使用以下构造函数:
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE, config: CONFIG, options: OPTIONS }); const request = mailjet .METHOD(RESOURCE, CONFIG) .request(DATA, PARAMS, PERFORM_API_CALL)
METHOD
:您想为此调用使用的方法(post
、put
、get
、delete
之一)RESOURCE
:您想调用的API端点OPTIONS
:描述连接选项的关联数组(完整列表请参见下面的选项)CONFIG
:描述连接配置的关联数组(完整列表请参见下面的配置)DATA
:作为请求主体发送的数据(仅适用于post
、put
、delete
方法)PARAMS
:与请求一起发送的URL参数PERFORM_API_CALL
:确定是否需要进行本地或实际请求的布尔参数options
具有以下结构:
headers
- 描述您可以传递给请求的附加头字段的关联数组timeout
- 指定请求超时前的毫秒数proxy
- 定义要重定向所有请求的代理服务器的主机名、端口和协议(仅Node选项)maxBodyLength
- 定义允许的http请求内容的最大大小(以字节为单位)(仅Node选项)maxContentLength
- 定义允许的http响应内容的最大大小(以字节为单位)(仅Node选项)您可以在初始化client
时传递options
,这些options
将用于每个request
:
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE, options: { timeout: 1000, maxBodyLength: 1500, maxContentLength: 100, headers: { 'X-API-Key': 'foobar', }, proxy: { protocol: 'http', host: 'www.test-proxy.com', port: 3100, } } });
有关更详细的信息,请访问此文档。
您可以使用timeout
参数为请求设置超时。
timeout
参数描述请求超时前的毫秒数。
如果请求时间超过timeout
,请求将被中止。
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE, options: { timeout: 100 } }); const request = mailjet .post('send', { version: 'v3.1' })
您可以使用headers
参数为请求设置附加头。
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE, options: { headers: { Accept: 'application/json', 'API-Key': 'foobar', 'Content-Type': 'application/json' } } }); const request = mailjet .post('send', { version: 'v3.1' })
您可以使用maxBodyLength
参数设置请求允许的http请求内容的最大大小(以字节为单位)。
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE, options: { maxBodyLength: 100 } }); const request = mailjet .post('send', { version: 'v3.1' })
注意:
此参数仅在NodeJS
端工作
您可以使用maxContentLength
参数设置允许的http响应内容的最大大小(以字节为单位)。
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE, options: { maxContentLength: 50 } }); const request = mailjet .post('send', { version: 'v3.1' })
注意:
此参数仅在NodeJS
端工作
proxy
参数允许您定义代理服务器的主机名、端口、身份验证和协议,以通过它发送API请求:
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE, options: { proxy: { protocol: 'https', host: '127.0.0.1', port: 8080, auth: { username: 'test', password: 'password' } } } }); const request = mailjet .post('send', { version: 'v3.1' })
注意:
此参数仅在NodeJS
端有效
config
具有以下结构:
host
- 设置自定义主机 URLversion
- 为特定端点设置所需的 API 版本 (可选 v3
、v3.1
、v4
)output
- 指示服务器将响应的数据类型您可以在初始化 client
时传递 config
,此 config
将用于每个 request
:
const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE, config: { host: 'api.mailjet.com', version: 'v3', output: 'text', } });
也可以为每个 request
手动设置 (此 config
的优先级高于传递给 client
的配置):
const request = mailjet .post('send', { host: 'api.mailjet.com', version: 'v3.1', output: 'json', })
Mailjet API 分为三个不同的版本:
v3
- Email API
v3.1
- Email Send API v3.1
,这是我们 Send API
的最新版本v4
- SMS API
由于大多数 Email API
端点位于 v3
下,它被设置为默认版本,在发出请求时无需指定。
对于其他版本,您需要使用 version
参数指定版本。
例如,如果使 用 Send API
v3.1
:
const request = mailjet .post('send', { version: 'v3.1' })
更多信息请参阅我们的 API 参考。
Mailjet API 的默认基本主机名是 api.mailjet.com
。
您可以通过在调用中设置 host
的值来修改此主机 URL:
const request = mailjet .post('send', { version: 'v3.1', host: 'api.us.mailjet.com' })
如果您的帐户已移至 Mailjet 的
US
架构,您需要设置的host
值为api.us.mailjet.com
。
Mailjet API 的默认响应输出是 json
。
您可以通过在调用中设置 output
的值来修改此响应输出数据:
const request = mailjet .post('send', { version: 'v3.1', output: 'arraybuffer' })
output
参数允许您指定响应数据的类型:
arraybuffer
document
json
(默认)text
stream
blob
(仅浏览器选项)默认情况下,API 调用参数始终启用。
但是,在测试期间您可能希望禁用它以防止对 Mailjet API 进行不必要的调用。
这可以通过将 performAPICall
参数值设置为 false
传递给 .request(data, params, performAPICall)
方法来实现:
const request = mailjet .post('send', { version: 'v3.1' }) .request({}, {}, false)
当前库基于 TypeScript
并为 Mailjet 类型提供完整覆盖。
所有类型都可以从主入口点 'node-mailjet'
导出:
import { Contact, SendEmailV3, SendEmailV3_1, Message, Segmentation, Template, SendMessage, Webhook } from 'node-mailjet';
该库还有一个通用方法 Request.request<TResult>(data, params, performAPICall)
,可与这些类型一起使用。
import { Client, SendEmailV3_1, LibraryResponse } from 'node-mailjet'; const mailjet = new Client({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); (async () => { const data: SendEmailV3_1.Body = { Messages: [ { From: { Email: 'pilot@test.com', }, To: [ { Email: 'passenger@test.com', }, ], TemplateErrorReporting: { Email: 'reporter@test.com', Name: 'Reporter', }, Subject: 'Your email flight plan!', HTMLPart: '<h3>Dear passenger, welcome to Mailjet!</h3><br />May the delivery force be with you!', TextPart: 'Dear passenger, welcome to Mailjet! May the delivery force be with you!', }, ], }; const result: LibraryResponse<SendEmailV3_1.Response> = await mailjet .post('send', { version: 'v3.1' }) .request(data); const { Status } = result.body.Messages[0]; })();
response
将具有以下形状:
{ response: Response; body: { Messages: Array<{ Status: string; Errors: Array<Record<string, string>>; CustomID: string; ... }>; } }
import * as Mailjet from 'node-mailjet'; // 另一种可能的导入选项 const mailjet = new Mailjet.Client({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); (async () => { const body: Mailjet.SendMessage.Body = { From: 'some@email.com', To: 'some2@email.com', Text: 'Test' }; const result: Mailjet.LibraryResponse<Mailjet.SendMessage.Response> = await mailjet .post('contact', { version: 'v3' }) .request(body); const { Status } = result.body; })();
response
将具有以下形状:
{ response: Response; body: { From: string; To: string; Text: string; MessageID: string | number; SMSCount: number; CreationTS: number; SentTS: number; Cost: { Value: number; Currency: string; }; Status: { Code: number; Name: string; Description: string; }; } }
import { Client, Contact, LibraryResponse } from 'node-mailjet' const mailjet = new Client({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); (async () => { const queryData: Contact.GetContactQueryParams = { IsExcludedFromCampaigns: false, Campaign: 2234234, }; const result: LibraryResponse<Contact.GetContactResponse> = await mailjet .get('contact', { version: 'v3' }) .request({}, queryData); const ContactID = result.body.Data[0].ID; })();
response
将具有以下形状:
{ response: Response; body: { Count: number; Total: number; Data: Array<{ ID: number; IsExcludedFromCampaigns: boolean; Name: string; CreatedAt: string; DeliveredCount: number; Email: string; ... }>; } }
对于库的早期版本 (3.*.*
及以下),您可以使用 @types/node-mailjet
依赖项。
这些 类型
已发布在 npm
上并可以使用。
这里 是 npm
页面。
如果有遗漏或您有改进建议,请随时请求更改。
要运行演示,您需要在本地安装并运行 http-proxy
。
使用以下命令安装:
npm install -g http-proxy
然后从 mailjet-apiv3-nodejs
目录运行以下命令:
http-server -p 4001 --proxy="https://api.mailjet.com"
演示应该在 http://0.0.0.0:4001/examples/ 上运行。
以下是在不同环境中构建的基本应用列表:
RequireJS
的基本应用,提供可以发出一些请求的页面ExpressJS
的应用,允许检索联系人列表并向某人发送电子邮件ReactJS
的应用,提供可以发出一些请求的页面Firebase
的应用,提供用于发送 hello world 电子邮件 和基于动态查询字符串数据发送 电子邮件 的 Firebase Functions
注意: 对于
浏览器
端示例,目前由于 CORS 限制,需要代理与 Mailjet API 通信。
POST
请求使用 Mailjet 客户端的 post
方法:
const request = mailjet .post($RESOURCE, $CONFIG) .id($ID) .request($DATA, $PARAMS, $PERFORM_API_CALL)
.request
参数 $DATA
将包含 POST
请求的主体。
如果要对特定对象执行操作并需要识别它,则需要定义 .id
。
POST
请求创建一个新的联系人:
const Mailjet = require('node-mailjet') const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); const request = mailjet .post('contact') .request({ Email: "passenger@mailjet.com", IsExcludedFromCampaigns: true, Name: "New Contact" }) request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
actions
管理联系人对多个列表的订阅状态:
const { Client } = require('node-mailjet') // 另一种使用解构的导入选项 const mailjet = new Client({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); const request = mailjet .post('contact') .id($contactID) .action('managecontactslists') .request({ ContactsLists: [ { ListID: $listID, Action: "addnoforce" } ] }) request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
GET
请求使用Mailjet客户端的get
方法:
const request = mailjet .get($RESOURCE, $CONFIG) .id($ID) .request($DATA, $PARAMS, $PERFORM_API_CALL)
.request
参数$PARAMS
将包含应用于请求的任何查询参数。
如果你想检索特定对象,需要定义.id
。
检索所有联系人:
const Mailjet = require('node-mailjet') const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); const request = mailjet .get('contact') .request() request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
检索所有不在营销排除列表中的联系人:
const Mailjet = require('node-mailjet') const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); const request = mailjet .get('contact') .request({}, { IsExcludedFromCampaigns: false }) request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
通过ID
检索特定联系人:
const Mailjet = require('node-mailjet') const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); const request = mailjet .get('contact') .id($contactID) .request() request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
PUT
请求使用Mailjet客户端的put
方法:
const request = mailjet .put($RESOURCE, $CONFIG) .id($ID) .request($DATA, $PARAMS, $PERFORM_API_CALL)
你需要定义.id
来指定要编辑的对象。
.request
参数$DATA
将包含PUT
请求的主体。
Mailjet API中的PUT
请求将作为PATCH
请求工作 - 更新只会影响指定的属性。
现有资源的其他属性既不会被修改,也不会被删除。
这也意味着所有非强制属性都可以从你的有效载荷中省略。
更新联系人的联系人属性:
const Mailjet = require('node-mailjet') const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); const request = mailjet .put('contactdata') .id($contactID) .request({ Data: [ { first_name: "John", last_name: "Smith" } ] }) request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
DELETE
请求使用Mailjet客户端的delete
方法:
const request = mailjet .delete($RESOURCE, $CONFIG) .id($ID) .request($DATA, $PARAMS, $PERFORM_API_CALL)
你需要定义.id
来指定要删除的对象。
.request
参数$DATA
应该为空。
成功的DELETE
请求响应将不包含响应主体,只有一个204 No Content
响应代码。
删除一个电子邮件模板:
const Mailjet = require('node-mailjet') const mailjet = new Mailjet({ apiKey: process.env.MJ_APIKEY_PUBLIC, apiSecret: process.env.MJ_APIKEY_PRIVATE }); const request = mailjet .delete('template') .id($templateID) .request() request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
SMS API
端点的认证使用Bearer令牌
完成。
Bearer令牌
在你的Mailjet账户的SMS部分生成。
const Mailjet = require('node-mailjet'); const mailjet = Mailjet.smsConnect(process.env.MJ_API_TOKEN);
这是一个SMS API
请求示例:
const Mailjet = require('node-mailjet'); const mailjet = Mailjet.smsConnect(process.env.MJ_API_TOKEN, { config: { version: 'v4' } }); const request = mailjet .post('sms-send') .request({ Text: "祝你在Mailjet的短信航班愉快!", To: "+33600000000", From: "MJPilot" }) request .then((result) => { console.log(result.body) }) .catch((err) => { console.log(err.statusCode) })
Mailjet喜欢开发者。你可以成为这个项目的一部分! 这个SDK是开源世界的一个很好的介绍,请查看代码!
随时提问,并贡献:
如果你有改进指南的建议,请在我们的官方API文档仓库提交一个问题。
Node.JS
>= 4.x使用以下命令初始化包:
npm run init
其中init
脚本包含所有基本的初始化步骤:
npm install
- 安装所有依赖npm run ts:patch
- 为正确构建TypeScript
声明文件而修补TS
编译器npm run pkg:prepare
- 为git hooks
安装husky
为发布目的构建(包括最小化):
npm run build
为开发目的构建(不包括最小化):
npm run build:dev && npm run build:prepublish
构建以进行监视和热重载:
npm run build:watch
执行所有测试:
npm run test
监视测试:
npm run test:watch
获取测试覆盖率:
npm run cover
要使用npm link
在本地测试新功能,请使用npm脚本npm run pkg:link
。
这是为了正确导出d.ts
文件所需的。
在PR合并之前,检查提交信息是否会正确添加到CHANGELOG.md
文件中:
npm run release:dry
这也允许查看包版本是否按照SemVer
约定正确增加。
然后运行:
npm run release
**重要:**如果包版本增加不正确,你应该手动使用这些脚本:
npm run release:patch
npm run release:minor
npm run release:major
CI过程目前不工作,所以请手动运行
npm run test
在feature
分支经过测试并合并到master
后进行发布。
首先,检出master
并pull
最新的提交。
git checkout master git pull
接下来,运行npm run release
。
之后,cd ./dist
然后运行npm login
和npm publish
以在npm上发布更改。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号