Sending a campaign
On this page:
Before sending a campaign, ensure that the subject
, HTML
and email_list_id
attributes are set.
A campaign can be sent with the send
method.
$campaign->send();
Alternatively you can set the email list and send the campaign in one go:
$campaign->sendTo($emailList);
If you don’t want to send email to your entire list, but only to a subset of subscribers, you can use a segment.
What happens when a campaign is being sent
When you send a campaign, a job called SendCampaign
job will be dispatched. This job will create a MailSend
model for each of the subscribers of the list you’re sending the campaign to. A MailSend
represents a mail that should be sent to one subscriber.
For each created SendMail
model, a SendMailJob
will be started. That job will send that actual mail. After the job has sent the mail, it will mark the SendMail
as sent, by filling sent_at
with the current timestamp.
You can customize on which queue the SendCampaignJob
and SendMailJob
jobs are dispatched in the perform_on_queue
in the email-campaigns
config file. We recommend the SendMailJob
having its own queue because it could contain many pending jobs if you are sending a campaign to a large list of subscribers.
The SendMailJob
is throttled by default so that it doesn’t overwhelm your email service with a large number of calls. Only 5 of those jobs will be handled per second. To learn more about this, read the docs on throttling sends.