Send e-post med PHP
Send en transaksjonell e-post fra PHP med en enkelt POST til /v1/email, autentisert med en Bearer API-nøkkel. Det finnes ingen offisiell PHP-SDK, så du kaller REST-endepunktet direkte; begge eksemplene nedenfor gjør det. Se Send e-post via API-et for full feltreferanse.
Forutsetninger
- En API-nøkkel, lest fra miljøvariabelen
MAILHUSET_API_KEY. - Et verifisert avsenderdomene for
from-adressen.
Guzzle
Guzzle er den vanlige HTTP-klienten. Installer den med composer require guzzlehttp/guzzle, og deretter:
<?php
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
$client = new Client();
try {
$response = $client->post('https://api.mailhuset.com/v1/email', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('MAILHUSET_API_KEY'),
'Content-Type' => 'application/json',
],
'json' => [
'from' => 'Acme <hello@yourdomain.com>',
'to' => ['customer@example.com'],
'subject' => 'Your receipt',
'html' => '<p>Thanks for your order.</p>',
'text' => 'Thanks for your order.',
],
]);
$message = json_decode((string) $response->getBody(), true);
echo "Accepted: {$message['id']}\n";
} catch (ClientException $e) {
// 401 bad/missing key, 403 from-domain not verified, 422 validation error.
$status = $e->getResponse()->getStatusCode();
$body = (string) $e->getResponse()->getBody();
fwrite(STDERR, "Send failed ($status): $body\n");
}Guzzle kaster ved et 4xx-svar, så catch-blokken er der du leser statusen og feilkroppen.
Rå cURL
Ingen avhengigheter, bare curl_*-funksjonene som er innebygd i PHP:
<?php
$payload = json_encode([
'from' => 'Acme <hello@yourdomain.com>',
'to' => ['customer@example.com'],
'subject' => 'Your receipt',
'html' => '<p>Thanks for your order.</p>',
'text' => 'Thanks for your order.',
]);
$ch = curl_init('https://api.mailhuset.com/v1/email');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('MAILHUSET_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => $payload,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($status >= 200 && $status < 300) {
$message = json_decode($body, true);
echo "Accepted: {$message['id']}\n";
} else {
// 401 bad/missing key, 403 from-domain not verified, 422 validation error.
fwrite(STDERR, "Send failed ($status): $body\n");
}Felt
Bygg JSON-kroppen med de faktiske feltene: from (Name <address> på et verifisert domene), to (en liste), subject, og innholdet som html og text (send begge når du kan). cc, bcc, replyTo (lister) og idempotencyKey er valgfrie. Hele listen står i Send e-post via API-et.
Svar
En 2xx returnerer den aksepterte meldingen, inkludert id-en dens. Feil: 401 feil eller manglende nøkkel, 403 from-domenet er ikke verifisert, 422 en valideringsfeil (svaret sier hvilket felt).
Neste steg
Gjenbruk innhold med Maler, og spor levering med Webhooks. Vil du ha en typet klient? Node og Python har offisielle SDK-er.
Trenger du hjelp? Send e-post til support@mailhuset.com.