Dokumentasjon › Send e-post med PHP

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

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.