Send transaksjonell e-post med Laravel
Send en transaksjonell e-post fra Laravel med en enkelt POST til /v1/email, autentisert med en Bearer API-nøkkel. Det finnes ingen offisiell Laravel-pakke, så du kaller REST-endepunktet med Laravels innebygde Http-fasade. Dette er et direkte alternativ til Laravels mail-driver for transaksjonelle utsendelser: ingen mailer-konfigurasjon, bare et HTTP-kall. Se Send e-post via API-et for full feltreferanse.
Forutsetninger
- En API-nøkkel. Legg den i
.envog les den via config. - Et verifisert avsenderdomene for
from-adressen.
Konfigurasjon
Legg nøkkelen i .env:
MAILHUSET_API_KEY=your-key-hereEksponer den gjennom en config-fil, for eksempel config/services.php:
'mailhuset' => [
'key' => env('MAILHUSET_API_KEY'),
],Sending
Kall endepunktet fra en kontroller eller en køjobb med Http-fasaden:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Http;
class ReceiptController extends Controller
{
public function send()
{
$response = Http::withToken(config('services.mailhuset.key'))
->post('https://api.mailhuset.com/v1/email', [
'from' => 'Acme <hello@yourdomain.com>',
'to' => ['customer@example.com'],
'subject' => 'Your receipt',
'html' => '<p>Thanks for your order.</p>',
'text' => 'Thanks for your order.',
]);
if ($response->successful()) {
return $response->json('id');
}
// 401 bad/missing key, 403 from-domain not verified, 422 validation error.
report(new \RuntimeException(
"Mailhuset send failed ({$response->status()}): {$response->body()}"
));
abort(502, 'Could not send email.');
}
}Http::withToken() setter Authorization: Bearer-headeren, og ->post() sender kroppen som JSON med riktig Content-Type. Å gjøre dette inne i en køjobb holder sendingen utenfor forespørselsløpet.
Felt
Bygg 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; $response->successful() dekker det området. Feil: 401 feil eller manglende nøkkel, 403 from-domenet er ikke verifisert, 422 en valideringsfeil (svaret sier hvilket felt).
Foretrekker du Laravels e-postdriver? Bruk SMTP
I et betalt abonnement kan du beholde Laravels egen Mail-fasade og mailables og sende via SMTP-reléet i stedet for å kalle API-et. Sett dette i .env med en SMTP-pålogging fra dashbordet:
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailhuset.com
MAIL_PORT=587
MAIL_ENCRYPTION=tls
MAIL_USERNAME=brukernavnet-til-påloggingen
MAIL_PASSWORD=passordet-til-påloggingen
MAIL_FROM_ADDRESS=hello@yourdomain.comNeste 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.