Skip to content

Commit 0d99465

Browse files
committed
added option to delay queued mail
1 parent 73d3984 commit 0d99465

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

src/EmailComposer.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,16 +197,20 @@ public function later($scheduledAt)
197197
/**
198198
* Queue the e-mail.
199199
*
200+
* @param string|null $connection
201+
* @param string|null $queue
202+
* @param \DateTimeInterface|\DateInterval|int|null $delay
200203
* @return Email
201204
*/
202-
public function queue($connection = null, $queue = null)
205+
public function queue($connection = null, $queue = null, $delay = null)
203206
{
204207
$connection = $connection ?: config('queue.default');
205208
$queue = $queue ?: 'default';
206209

207210
$this->setData('queued', true);
208211
$this->setData('connection', $connection);
209212
$this->setData('queue', $queue);
213+
$this->setData('delay', $delay);
210214

211215
return $this->send();
212216
}
@@ -293,7 +297,8 @@ public function send()
293297
if ($this->getData('queued', false) === true) {
294298
dispatch(new SendEmailJob($this->email))
295299
->onConnection($this->getData('connection'))
296-
->onQueue($this->getData('queue'));
300+
->onQueue($this->getData('queue'))
301+
->delay($this->getData('delay'));
297302

298303
return $this->email;
299304
}

tests/QueuedEmailsTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,20 @@ public function emails_can_be_queued_on_a_specific_queue()
5959
});
6060
}
6161

62+
/** @test */
63+
public function emails_can_be_queued_with_a_delay()
64+
{
65+
Queue::fake();
66+
67+
$delay = now()->addMinutes(6);
68+
69+
$this->queueEmail(null, null, $delay);
70+
71+
Queue::assertPushed(SendEmailJob::class, function (SendEmailJob $job) use ($delay) {
72+
return $job->delay->getTimestamp() === $delay->timestamp;
73+
});
74+
}
75+
6276
/** @test */
6377
public function the_send_email_job_will_call_send_on_the_email_instance()
6478
{

tests/TestCase.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,9 @@ public function scheduleEmail($scheduledFor, $overwrite = [])
131131
return $this->createEmail($overwrite)->schedule($scheduledFor);
132132
}
133133

134-
public function queueEmail($connection = null, $queue = null, $overwrite = [])
134+
public function queueEmail($connection = null, $queue = null, $delay = null, $overwrite = [])
135135
{
136-
return $this->createEmail($overwrite)->queue($connection, $queue);
136+
return $this->createEmail($overwrite)->queue($connection, $queue, $delay);
137137
}
138138

139139
public function assertStringContains($needle, $haystack)

0 commit comments

Comments
 (0)