Setting

Mails

In VaahCMS there are two ways by which we can send mails.

  1. Send mails without Laravel Queues
  2. Send mails with laravel Queues

1. Send mails without Laravel Queues

If you want to send your mails immediately , then you just need to use the following code snippet into your php file.

VaahMail::send($mail, $to, $cc, $bcc);
  • $mail should be an instance of Laravel Mail Illuminate\Mail\Mailable class.
  • $to is list of recipients in array format.
  • $cc is the list of cc recipients in array format.
  • bcc is list of bcc recipients in array format.

2. Send mails with laravel Queues

For sending mails with laravel Queues, first you need to Setup Laravel Queues for VaahCMS.


Steps to Setup laravel Queues :

  1. Set QUEUE_CONNECTION to database in your active env file
  2. Visit Setting > General > Site Settings > Laravel Queues in your backend dashboard and enable it.
  3. Run or setup cron/daemon job for
php artisan queue:work --queue=high,medium,low,default --env=env_filename

If you want to run without cache use following command:

php artisan queue:listen --queue=high,medium,low,default --env=env_filename

eg:

php artisan queue:listen --queue=low --env=.env.test

If you make any changes in code of your Job class, then you must restart the queue:work command.


Send a generic mail

Step 1. To send a generic mail, you just need to copy the below code snippet into your php file.

VaahMail::dispatchGenericMail($subject, $message, $to, $from_email, 
                              $from_name, $cc, $bcc, $priority);

Following are the parameters that we need to define to send a generic mail in vaahcms.

NameDescription
$subjectSubject of the email
$messageContent of the message, it can have html tags
$toList of recipients in array format.
$from_emailFrom email, if it's not set, then it will try to get the domain from APP_URL and add noreply. Eg: noreply@<domain>
$from_nameFrom name, if it's not set, the name will be taken from APP_NAME
$ccList of cc recipients in array format.
$bccList of bcc recipients in array format.

Step 2. When you run your code a job will be created in jobs table in database, you will need to run the following command to run the created jobs from jobs table.

php artisan queue:listen --queue=high,medium,low,default --env=env_filename

when you run this command, the job will be removed from the jobs table and mail will be sent.


Send Laravel mails

VaahMail::dispatch($mail, $to, $cc, $bcc, $priority);
  • $mail should be an instance of Laravel Mail Illuminate\Mail\Mailable class.
    Command to create mailable class in laravel
php artisan make:mail className

e.g

php artisan make:mail HelloEmail

After you run this command a class named HelloEmail will be created in app/Mail directory. Then your mailable class should look like this As you can see there is a file named hello.blade.php file in views directory, this file contains the code used to define the content of the email.
Follow Below image for reference:

Now you need to create an instance of mailable class and use the method VaahMail::dispatch.
Follow below image for reference:

Once you run your code a job will be created in jobs table in database, to run the jobs use any of the methods defined above.

  • $to is the array of recipient:
  • $priority it is the order of execution of the jobs. You can provide following values high, medium low & default

Send mail to a user

$user = User::find(1);
VaahMail::dispatchToUser($mail, $user, $cc, $bcc, $priority);
  • $user is an instance of WebReinvent\VaahCms\Entities\User

Send a mail to Super Administrators

User::notifySuperAdmins($subject, $message);

Customizing The Templates

To customize the default Laravel mail & notification template you must publish the asset, using following commands:

php artisan vendor:publish --tag=laravel-mail
php artisan vendor:publish --tag=laravel-notifications

This will publish files under resources/views/vendor/mail directory. To update the UI of the VaahCMS Mails, you can edit following file:

resources/views/vendor/mail/html/header.blade.php
resources/views/vendor/mail/html/footer.blade.php
resources/views/vendor/mail/html/themes/default.css


Copyright © 2024