Odoslanie kampane
Fasáda Campaigns je najrýchlejší spôsob, ako kampaň vytvoriť, adresovať a odoslať. create() prijme predmet a obsah a vráti fluent builder PendingCampaign; UUID kampane sa vygeneruje automaticky:
use RoundlyConsulting\Campaigns\Facades\Campaigns;
$campaign = Campaigns::create('Our spring collection is here', '<p>Hello, the spring collection just landed.</p>')
->from('[email protected]', 'Example Shop')
->to(['[email protected]', '[email protected]'])
->dispatch(); // prepare + start in one call
// Follow it through its handle.
$progress = Campaigns::campaign($campaign->uuid)->progress();
$progress->percentage(); // share delivered so far, e.g. 42.5 — live while sending
$progress->failed; // deliveries that failed
$progress->remaining(); // recipients with no outcome yet
$progress->isRunning(); // bool
$progress->isComplete(); // bool
// Cancel it and its batch; the cancelled Campaign comes back.
$campaign = Campaigns::cancel($campaign->uuid);dispatch() kampaň pripraví — otvorí jej dávku jobov, uloží ju aj s príjemcami a nastaví stav Pending — potom ju spustí a vráti aktuálny objekt Campaign.
Metódy buildera
- from($address, ?$name) — odosielateľ; meno je predvolene rovnaké ako adresa. Bez neho platia uložené predvolené nastavenia — a ak chýba aj predvolená from-address, globálne mail.from mailera.
- to($recipients) — pridá príjemcov; volania sa sčítavajú. Pozrite si časť Príjemcovia.
- uuid($uuid) — vlastné id namiesto vygenerovaného. uuid, ktoré už má iná kampaň, vyhodí CampaignAlreadyExists: príprava existujúcu kampaň nikdy neprepíše ani znova neodošle.
- subject($subject) / content($content) — nahradia hodnoty zadané v create().
- onlyVerified(bool $onlyVerified = true) / viaContactType($type) — pravidlá pre určenie príjemcov z kontaktov a vlastníkov.
- prepare() — otvorí dávku, uloží kampaň aj s príjemcami a ponechá ju v stave Pending bez odoslania.
- dispatch() — príprava a spustenie jedným volaním.
Pripravte teraz, odošlite neskôr
use RoundlyConsulting\Campaigns\Facades\Campaigns;
$campaign = Campaigns::create('Draft subject', 'Draft body')
->uuid('0b6f4c1e-8d2a-4f0e-9c3b-5a7d2e1f4b6c') // your own id instead of a generated UUID
->subject('Our spring collection is here') // replace the subject
->content('<p>Hello, the spring collection just landed.</p>')
->from('[email protected]') // the name defaults to the address
->to('[email protected]')
->prepare(); // batch opened, status Pending, nothing sent
// Later — from a scheduled job or an admin action:
Campaigns::start($campaign->uuid); // only a Pending campaign startsprepare() uloží kampaň aj s príjemcami a vráti ju v stave Pending. Keď budete pripravení, spustite ju cez Campaigns::start(). Spustiť sa dá len kampaň v stave Pending — spustenie kampane, ktorá sa už odosiela alebo skončila, vyhodí InvalidCampaignTransition namiesto toho, aby všetkých príjemcov zaradilo do fronty druhýkrát. Platí to aj vtedy, keď ju v tej istej chvíli spustia dva procesy — dvojklik na tlačidlo, dva workery plánovača: presun do Processing je jedno atomické compare-and-set a príjemcov zaradí len jeho víťaz. Kampaň, ktorá nemá komu posielať — nemá príjemcov alebo boli všetci vlastníci odfiltrovaní — sa dokončí hneď po spustení.
Spustenie v neskoršom requeste vyžaduje databázové úložisko: úložisko v pamäti žije len počas aktuálneho requestu, konzolového príkazu alebo jobu vo fronte.
Ostatné metódy fasády — vyhľadávanie, výpis, handle pre jednu kampaň, settings() — opisuje časť Fasáda Campaigns.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.