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 v Emailit dashboardu, 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í v Emailit dashboardu 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.
Blog
Nejnovější zprávy a aktualizace přímo od Emailitu.
Buďte v obraze s nejnovějšími články z blogu Emailit.


