Přejít na obsah

Návody5 min čtení

Odesílání e-mailů pomocí Laravelu

Naučte se odesílat e-maily v Laravelu pomocí balíčku Emailit Laravel. Integruje se jako nativní mailový transport a poskytuje vám plný přístup k Emailit API prostřednictvím Facade.

GAutor

Odesílání e-mailů pomocí Laravelu

Laravel je dodáván s vynikající podporou pro odesílání e-mailů přímo z krabice, ale stále potřebujete spolehlivou doručovací službu na pozadí. Balíček Emailit Laravel se připojuje přímo do mailového systému Laravelu jako nativní transport. Vaše stávající Mailables, Notifications a volání Mail::send() fungují bez jakýchkoli změn kódu. Navíc získáte plný přístup k Emailit API prostřednictvím pohodlného Facade.

Odesílání e-mailů je jedním z nejčastějších úkolů v jakékoli Laravel aplikaci. Potvrzení registrace uživatelů, resetování hesel, účtenky objednávek, aktualizace zásilek a marketingové newslettery - to vše závisí na spolehlivém doručování e-mailů. Zatímco Laravel poskytuje výkonnou abstrakční vrstvu pro e-maily, skutečné doručování stále závisí na transportu, který nakonfigurujete. Použití e-mailového API jako je Emailit vám poskytne vysokou doručitelnost, sledování doručení, správu odrazů a podrobné analýzy, aniž byste museli spravovat SMTP servery nebo se starat o reputaci IP adres.

V této příručce si projdeme nastavení Emailit v Laravel aplikaci a odesílání e-mailů pomocí standardního Laravel mailového systému i Emailit Facade.

Požadavky

  • PHP 8.1 nebo vyšší
  • Laravel 10, 11 nebo 12
  • Emailit účet s API klíčem

Instalace

Nainstalujte balíček přes Composer:

composer require emailit/emailit-laravel

Balíček automaticky objeví svého service providera, takže není potřeba ruční registrace. Funguje s Laravel 10, 11 a 12 přímo z krabice.

Konfigurace

Přidejte svůj API klíč do .env:

EMAILIT_API_KEY=vas_api_klic

Nastavte Emailit jako výchozí mailer:

MAIL_MAILER=emailit

Přidejte emailit mailer do pole mailerů v config/mail.php:

'mailers' => [
    // ...

    'emailit' => [
        'transport' => 'emailit',
    ],
],

Volitelně publikujte konfigurační soubor pro přizpůsobení základní URL API:

php artisan vendor:publish --tag=emailit-config

Konfigurace je záměrně minimální. Jakmile nastavíte svůj API klíč a výchozí mailer, Laravel automaticky směruje všechny odchozí e-maily přes Emailit. Není potřeba konfigurovat SMTP hosty, porty, nastavení šifrování nebo přihlašovací údaje jako u tradičního nastavení mailového serveru.

Odesílání e-mailů s Laravel Mail

Po konfiguraci fungují všechny funkce Laravel mailu přímo z krabice. Nic ve vašem stávajícím kódu se nemusí měnit.

Použití Mailable

Vytvořte Mailable třídu jako obvykle:

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class VitejteEmail extends Mailable
{
    use Queueable, SerializesModels;

    public function __construct(
        public readonly User $user,
    ) {}

    public function envelope(): Envelope
    {
        return new Envelope(
            subject: 'Vítejte v naší aplikaci',
        );
    }

    public function content(): Content
    {
        return new Content(
            view: 'emails.vitejte',
        );
    }
}

Poté jej odešlete:

use Illuminate\Support\Facades\Mail;
use App\Mail\VitejteEmail;

Mail::to('uzivatel@priklad.cz')->send(new VitejteEmail($user));

Frontové e-maily, Markdown mailables a Notifications fungují přesně tak, jak byste očekávali. Emailit sedí transparentně za Laravel mailovou vrstvou, takže jej můžete vyměnit za jakýkoli stávající transport jako SMTP, Mailgun nebo SES, aniž byste se dotkli kódu aplikace. To usnadňuje testování Emailit vedle vašeho současného poskytovatele nebo postupnou migraci.

Použití Emailit Facade

Pro funkce, které jdou nad rámec toho, co nabízí Laravel mailový systém, jako jsou šablony s proměnnými, naplánované odesílání nebo správa API zdrojů, použijte Emailit Facade. Poskytuje vám přímý přístup k plnému Emailit PHP SDK.

Odeslání e-mailu přes API

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'    => 'ahoj@vasedomena.cz',
    'to'      => ['uzivatel@priklad.cz'],
    'subject' => 'Ahoj z Emailit',
    'html'    => '<h1>Vítejte!</h1>',
]);

echo $email->id;
echo $email->status;

Odeslání se šablonou

Odkazujte na šablony, které jste vytvořili ve webovém rozhraní Emailitu, a předávejte dynamické proměnné:

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'      => 'ahoj@vasedomena.cz',
    'to'        => 'uzivatel@priklad.cz',
    'template'  => 'vitejte_email',
    'variables' => [
        'jmeno'     => 'Jan Novák',
        'spolecnost' => 'Acme s.r.o.',
    ],
]);

Použití serverových šablon je mocný vzor pro Laravel aplikace. Vaši designéři a marketéři mohou aktualizovat obsah e-mailů, styling a rozložení ve webovém rozhraní Emailitu bez nutnosti změn kódu nebo nových nasazení. PHP kód pouze potřebuje předat data a šablona se postará o vykreslení.

Naplánování e-mailu

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'         => 'pripominky@vasedomena.cz',
    'to'           => 'uzivatel@priklad.cz',
    'subject'      => 'Připomínka schůzky',
    'html'         => '<p>Vaše schůzka je zítra ve 14:00.</p>',
    'scheduled_at' => '2026-04-10T09:00:00Z',
]);

Naplánované e-maily jsou zpracovávány výhradně Emailit API, což znamená, že fungují nezávisle na vašem Laravel queue systému. To je ideální pro připomínky schůzek, oznámení o obnovení předplatného a časově citlivé kampaně, kde chcete zaručené doručení v konkrétní čas, i když váš aplikační server zažívá výpadek.

Odeslání s přílohami

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'        => 'faktury@vasedomena.cz',
    'to'          => 'zakaznik@priklad.cz',
    'subject'     => 'Vaše faktura č. 12345',
    'html'        => '<p>Vaši fakturu najdete v příloze.</p>',
    'attachments' => [
        [
            'filename'     => 'faktura.pdf',
            'content'      => base64_encode(file_get_contents('faktura.pdf')),
            'content_type' => 'application/pdf',
        ],
    ],
]);

Správa zdrojů

Facade zpřístupňuje každou službu z Emailit API, takže můžete spravovat celou svou e-mailovou infrastrukturu z Laravelu.

Domény

use Emailit\Laravel\Facades\Emailit;

$domain = Emailit::domains()->create([
    'name' => 'priklad.cz',
    'track_loads' => true,
    'track_clicks' => true,
]);

$domain = Emailit::domains()->verify('sd_123');

Správa odesílacích domén přes API je užitečná pro SaaS platformy, které potřebují nastavit vlastní domény pro každého zákazníka. Můžete automatizovat celý workflow ověřování domén, včetně kontrol DNS záznamů, přímo z vaší Laravel aplikace.

Kontakty

use Emailit\Laravel\Facades\Emailit;

$contact = Emailit::contacts()->create([
    'email' => 'uzivatel@priklad.cz',
    'first_name' => 'Jan',
    'last_name' => 'Novák',
]);

$contacts = Emailit::contacts()->list();

Ověřování e-mailů

use Emailit\Laravel\Facades\Emailit;

$result = Emailit::emailVerifications()->verify([
    'email' => 'test@priklad.cz',
]);

echo $result->status; // valid
echo $result->risk;   // low

Ověřování e-mailových adres v okamžiku registrace nebo odeslání formuláře vám pomáhá udržovat čistý seznam kontaktů a chrání vaši reputaci odesílatele. Vysoké míry odrazů z neplatných adres mohou způsobit, že vaše e-maily skončí ve spamových složkách, takže ověřování je osvědčenou praxí pro jakoukoli Laravel aplikaci, která odesílá transakční nebo marketingové e-maily ve velkém měřítku.

Dependency injection

Pokud nechcete používat Facades, můžete klienta vložit přímo:

use Emailit\EmailitClient;

class EmailController extends Controller
{
    public function send(EmailitClient $emailit)
    {
        $email = $emailit->emails()->send([
            'from'    => 'ahoj@vasedomena.cz',
            'to'      => ['uzivatel@priklad.cz'],
            'subject' => 'Ahoj',
            'html'    => '<p>Zdravím!</p>',
        ]);

        return response()->json(['id' => $email->id]);
    }
}

Laravel service container automaticky vyřeší instanci EmailitClient s API klíčem z vaší konfigurace, takže získáte stejné pohodlí jako u Facade s výhodami testovatelnosti dependency injection.

Zpracování chyb

Základní PHP SDK vyhazuje typované výjimky, takže můžete zachytit konkrétní typy chyb:

use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\ApiErrorException;
use Emailit\Laravel\Facades\Emailit;

try {
    Emailit::emails()->send([...]);
} catch (AuthenticationException $e) {
    // Neplatný API klíč (401)
} catch (RateLimitException $e) {
    // Příliš mnoho požadavků (429)
} catch (ApiErrorException $e) {
    // Jakákoli jiná API chyba
    echo $e->getHttpStatus();
}

V Laravel aplikaci můžete také zpracovávat tyto výjimky globálně ve svém exception handleru nebo použít middleware k zachycení chyb rate limitu a implementaci automatické logiky opakování. To zajišťuje, že vaše aplikace zůstane odolná i při odesílání velkých objemů e-mailů.

Všechny dostupné služby

Facade vám poskytuje přístup ke všemu v Emailit API:

Služba

Použití

Popis

E-maily

Emailit::emails()

Odesílání, výpis, získání, zrušení, opakování e-mailů

Domény

Emailit::domains()

Vytváření, ověřování, výpis, správa odesílacích domén

API klíče

Emailit::apiKeys()

Vytváření, výpis, správa API klíčů

Publikum

Emailit::audiences()

Vytváření, výpis, správa publika

Odběratelé

Emailit::subscribers()

Přidávání, výpis, správa odběratelů

Šablony

Emailit::templates()

Vytváření, výpis, publikování e-mailových šablon

Potlačení

Emailit::suppressions()

Vytváření, výpis, správa potlačených adres

Ověřování e-mailů

Emailit::emailVerifications()

Ověřování e-mailových adres

Seznamy ověřování e-mailů

Emailit::emailVerificationLists()

Hromadné ověřování e-mailů

Webhooky

Emailit::webhooks()

Vytváření, výpis, správa webhooků

Kontakty

Emailit::contacts()

Vytváření, výpis, správa kontaktů

Události

Emailit::events()

Výpis a získávání událostí

Začněte

Nainstalujte balíček a začněte odesílat za méně než minutu:

composer require emailit/emailit-laravel

Podívejte se na kompletní dokumentaci balíčku na GitHubu, Emailit PHP SDK pro základní klient, nebo přejděte na API Reference pro podrobnosti o každém endpointu.

Sdílet

Vyzkoušejte, o čem jste právě četli.

3 000 e-⁠mailů měsíčně zdarma. Bez platební karty.

3 000 e-⁠mailů měsíčně zdarma · Bez platební karty