Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

guillaumebriday/laravel-blog

1797 stars
4 code files
View guillaumebriday/laravel-blog on GitHub

app/Jobs/SendNewsletterSubscriptionEmail.php

Open in GitHub
use App\Mail\Newsletter;
use App\Models\Post;
use Mail;
 
class SendNewsletterSubscriptionEmail
{
protected $email;
 
public function __construct($email)
{
$this->email = $email;
}
 
public function handle(): void
{
$posts = Post::lastMonth()->get();
$email = $this->email;
 
Mail::to($this->email)->send(new Newsletter($posts, $email));
}
}

app/Mail/Newsletter.php

Open in GitHub
use Illuminate\Mail\Mailable;
 
class Newsletter extends Mailable
{
protected $posts;
protected $email;
 
public function __construct($posts, $email)
{
$this->posts = $posts;
$this->email = $email;
}
 
public function build(): Newsletter
{
return $this->from('[email protected]', config('app.name', 'Laravel'))
->subject(__('newsletter.email.subject'))
->view('emails.newsletter')
->with([
'posts' => $this->posts,
'email' => $this->email
]);
}
}

app/Jobs/PrepareNewsletterSubscriptionEmail.php

Open in GitHub
use App\Models\NewsletterSubscription;
 
class PrepareNewsletterSubscriptionEmail
{
public function handle(): void
{
$newsletterSubscriptions = NewsletterSubscription::all();
 
$newsletterSubscriptions->each(fn ($newsletterSubscription) => SendNewsletterSubscriptionEmail::dispatch($newsletterSubscription->email));
 
PrepareNewsletterSubscriptionEmail::dispatch()->delay(carbon('next month'));
}
}
//
 
Starting job for newsletter :
 
$ artisan tinker
> PrepareNewsletterSubscriptionEmail::dispatch();
 
//

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.