Skip to content

mailkite/mailkite-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MailKite

MailKite for PHP

Email for every product you ship — receive email as a webhook, send over a verified domain, give an AI agent its own inbox.
The official MailKite library for PHP.

Docs · Library guide · mailkite.dev · AI agents

Packagist

Read-only mirror. This repo is a generated, release-time mirror of the MailKite monorepo (the private source of truth) — development doesn't happen here. Install from Packagist and open issues against the MailKite docs.

Install

composer require mailkite/mailkite

Quickstart

<?php
require 'vendor/autoload.php';

$mk = new \MailKite\Client(getenv('MAILKITE_API_KEY'));

$res = $mk->send([
    'from' => 'hello@myapp.ai',
    'to' => 'ada@example.com',
    'subject' => 'Your invoice #1042',
    'html' => '<p>Thanks! Receipt attached.</p>',
]);

Examples

Runnable examples live in examples/ — send mail, verify webhooks, build an AI email agent, and log users in:

Example What it shows
examples/01-send-email.php Send an email over a verified domain — the 10-second "it works".
examples/02-receive-webhook.php Receive inbound email as a webhook — and VERIFY the HMAC signature before trusting it.
examples/03-agent-reply.php An AI email agent: inbound email → Claude drafts a reply → MailKite sends it, threaded.
examples/04-agent-inbox.php Give your agent its own email address — MailKite's built-in inbox agent answers mail for…
examples/05-server-login.php Server-side login + register.

API methods

Every method is documented on its own page under docs/. The full surface:

Method What it does
send Send a message over a verified domain. Pass templateId (+ optional templateData) to…
uploadAttachment Upload a file to MailKite storage and get back a secure, time-limited URL. Reference the…
listTemplates List your saved email templates (light metadata only — no body). Use getTemplate for the…
listBaseTemplates List the premade base templates (light metadata). Clone one with createTemplate({ baseId…
getTemplate Get one template (full: subject, html, text, theme). Works for your templates (tpl_…) and…
createTemplate Create a template. Pass baseId to clone a base template into your own, or provide…
listDomains List your domains, each with its webhook URL.
createDomain Add a domain. Returns the domain + DNS records.
getDomain Get one domain with DNS records + webhook.
deleteDomain Remove a domain.
verifyDomain Check DNS and update status.
setWebhook Set or replace the domain's catch-all webhook.
deleteWebhook Remove the domain's webhook.
testWebhook Send a signed test event to the domain's webhook.
checkDomainAvailability Check whether a domain is available to register, and at what price. Read-only — no charge.
registerDomain Register (buy) a domain on the customer's behalf; provisions mail DNS and adds it to the…
listRoutes List inbound routing rules.
createRoute Create a route (match, action, destination).
agent Send a message to one of your inbox agents and get its reply. Defaults to the account's…
route Route a message to one of your registered routes (by routeId or address), running…
listMessages List stored messages, newest first. Optionally page with before (a received_at
getMessage Get a message with deliveries + attachments.
retryDelivery Re-deliver a stored message to its webhook.
listLists List your contact lists (static, curated broadcast audiences), each with its member count.
createList Create a contact list. Returns the list with its id (lst_…); add contacts with…
getList Get one contact list with its member count.
updateList Rename a contact list.
deleteList Delete a contact list. The list is removed; the contacts themselves are kept.
listListContacts List the contacts that are members of a list, newest first. Optionally page with before
addListContacts Add contacts (by id, ctr_…) to a list. Returns how many were newly added; contacts…
removeListContact Remove one contact from a list (the contact itself is kept).
listBroadcasts List your broadcasts (one-to-many sends) with status and send stats.
createBroadcast Create a broadcast draft. from is required; set audience to { type: "all" } or {…
getBroadcast Get one broadcast with its status and recipient summary.
updateBroadcast Edit a draft broadcast (any of from/subject/audience/html/… ). Drafts only.
deleteBroadcast Delete a broadcast draft.
sendBroadcast Send a broadcast now, or pass an ISO 8601 scheduledAt to schedule it. A one-click…
verifyWebhook Verify the x-mailkite-signature header on an inbound webhook delivery. Runs entirely…
replyOk The acknowledgement body a webhook consumer returns to confirm it processed the event —…
replySpam Control-mode reply a webhook consumer returns to tell MailKite to mark the message as…
replyDrop Control-mode reply a webhook consumer returns to tell MailKite to drop (discard) the…
replyBlockSender Control-mode reply a webhook consumer returns to tell MailKite to block the sender — the…
encrypt Encrypt a UTF-8 string to a domain's RSA public key (SPKI/PEM), returning the at-rest…
decrypt Decrypt a MailKite at-rest envelope JSON with your RSA private key (PKCS8/PEM), returning…
semanticSearch Semantic search over the MailKite documentation — returns the most relevant doc sections…

Use it from an AI agent — MCP + Agent connectors

MailKite speaks the Model Context Protocol: every API method is a tool your AI assistant (Claude, Cursor, …) can call — send mail, manage domains, search the docs, and give an agent its own inbox. Full guide: https://mailkite.dev/docs/ai-agents.

Hosted (recommended) — one-click OAuth, no key to copy:

claude mcp add --transport http mailkite https://mcp.mailkite.dev/mcp

In Claude Code you can also install the plugin:

/plugin marketplace add mailkite/claude-code
/plugin install mailkite@mailkite

Any chat/UI agent: "Add the MCP server at https://mcp.mailkite.dev/mcp and authenticate in the browser when prompted."

Local (static key, offline / CI):

{ "mcpServers": { "mailkite": { "command": "npx", "args": ["-y", "@mailkite/mcp"], "env": { "MAILKITE_API_KEY": "mk_live_…" } } } }

Give an agent its own inbox. Route inbound mail to a built-in inbox agent (the agent route action) and it answers, files, or escalates on its own — see https://mailkite.dev/docs/ai-agents.

All MailKite libraries

Same contract, every language — pick the one for your stack (full list: https://mailkite.dev/docs/libraries):

Library Repo Distribution
MailKite for Node.js mailkite-node npm
MailKite for Python mailkite-python PyPI
MailKite for Ruby mailkite-ruby RubyGems
MailKite for Java mailkite-java Maven Central
MailKite for PHP (this repo) mailkite-php Packagist
MailKite for Go mailkite-go Go modules
@mailkite/cli mailkite-cli npm
@mailkite/mcp mailkite-mcp npm
@mailkite/client mailkite-js npm
@mailkite/expo mailkite-expo npm
MailKiteClient mailkite-swift Swift Package Manager
dev.mailkite:mailkite-client mailkite-kotlin Maven Central
mailkite_client mailkite-flutter pub.dev

Docs & links

Generated from the shared MailKite API contract. © MailKite.

About

Official MailKite SDK for PHP — read-only mirror of mailkite/mailkite:sdks/php (published to Packagist). Do not edit here.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages