Príjemcovia
->to() sa sčítava a prijíma e-mailovú adresu či iný reťazec smerovania, CampaignRecipient, kontakt Contact z contacts-for-laravel, model vlastníka s HasContacts alebo akýkoľvek iterovateľný zoznam z nich — pole, kolekciu či generátor:
use Illuminate\Support\Str;
use RoundlyConsulting\Campaigns\CampaignRecipient;
use RoundlyConsulting\Campaigns\Facades\Campaigns;
Campaigns::create('Our spring collection is here', $html)
->from('[email protected]', 'Example Shop')
->to('[email protected]') // one address or route
->to(['[email protected]', '[email protected]']) // any iterable — calls are additive
->to(new CampaignRecipient( // full control over the id and name
uuid: (string) Str::uuid(),
name: 'Dana Novak',
reachableAt: '[email protected]',
))
->dispatch();- Obyčajný reťazec sa stane príjemcom, ktorého meno aj adresa sú tento reťazec, s vygenerovaným UUID.
- CampaignRecipient sa ponechá bez zmeny — použite ho, ak chcete nastaviť zobrazované meno alebo vlastné id.
- Každá adresa sa pridá len raz: adresa, ktorá už v kampani je — porovnáva sa bez ohľadu na veľkosť písmen a na to, ako prišla (reťazec, CampaignRecipient, vlastník či kontakt) — sa preskočí a platí tá, ktorá bola pridaná ako prvá.
- Príjemca, ktorý už patrí inej kampani, sa pridá ako nová kópia — s novým uuid a čistým stavom doručenia — a z pôvodnej kampane sa nikdy nepresunie.
- Čokoľvek iné — číslo alebo model bez traitu HasContacts — vyhodí InvalidArgumentException.
Pre kontakty a vlastníkov platia vlastné pravidlá — pozrite si časť Príjemcovia z kontaktov.
Veľké zoznamy
Pri veľkom publiku zdrojový dopyt streamujte namiesto načítania naraz: lazyById() číta tabuľku po častiach a to() prijme lazy kolekciu ako akýkoľvek iný iterovateľný zoznam. Všetci príjemcovia sa uložia pri príprave kampane a start() potom spustí jeden job na každého uloženého príjemcu:
use App\Models\Subscriber;
use Illuminate\Support\Str;
use RoundlyConsulting\Campaigns\CampaignRecipient;
use RoundlyConsulting\Campaigns\Facades\Campaigns;
$campaign = Campaigns::create('Monthly digest', $html)
->from('[email protected]', 'Example Shop')
->to(Subscriber::query()->lazyById(500)->map(fn (Subscriber $subscriber) => new CampaignRecipient(
uuid: (string) Str::uuid(),
name: $subscriber->name,
reachableAt: $subscriber->email,
)))
->prepare();
Campaigns::start($campaign); // one job per stored recipientCelé publikum zozbierajte pred prepare() alebo dispatch() — start() zaradí do fronty príjemcov uložených v tej chvíli.
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.