'Add bold text and line break into Laravel Notification Email
Laravel 5.6
I'm attempting to send a Laravel Notification via email.  I want to make make some of the text bold, and put in line breaks, without a whole new paragraph that the line($text) method brings. So I have tried this in the notification class.  I have also tried using the \n string for new line.
return (new MailMessage)
->subject('Booking Confirmed - Please Read')
->greeting('Hello ' . $this->booking->user->first_name . ',')
->line('Thank you for booking. Here are your booking details:')
->line($this->booking->provider->providerType->name . '<br>' .
    $date . '<br>' .
    $this->booking->start_at . '<br>' .
    $this->booking->address_1 . '<br>' .
    $this->booking->address_2 . '<br>' .
    $this->booking->address_3 . '<br>' .
    $this->booking->city . '<br>' .
    $this->booking->postcode . '<br>' .
    '£' . $this->booking->price
)
->line('<strong>Need to cancel?</strong><br>' .
    'Don\'t forget to contact the provider on the details above if you need to cancel or reschedule. 
    They won\'t mind, as long as you tell them.'
)
->line('<strong>Payment</strong><br>' .
    'Pay the Service provider direct as you normally would. This keeps things simple and costs down.'
)
->line('<strong>FAQ\'s</strong><br>' .
    'Please click here for more information'
)
->line('<strong>Don\'t forget to leave feedback after!</strong><br>' .
    'Help build your relationship with your Service Providers by leaving feedback'
)
->line('We hope to see you again soon!')
I have tried with and without publishing the blade templates via the php artisan vendor:publish --tag=laravel-mail command and then updating {{$line}} to {!! $line !!}} with no joy.  Can't figure it out.
Solution 1:[1]
I figured this out, incase anyone else out there is as dumb as me.
I think there are 2 reasons why this was broken.  @DouwedeHaan suggested I use double quotes instead of single when using \n which didn't do much but combined with the next part I think did the trick.
The blade template that renders the html is in markdown. I hadn't figured this out. The layout of it is specific, and I had accidentally broken it after I published it by removing some lines and formatting the file with indents which broke everything.
I deleted the file, re-published the template updated all instanced of {{$line}} to {!! $line !!} ensuring to leave the rest of the file as is, updated my notification to use double quotes and stuck with <br/> and <strong></strong> tags and now it works as expected.
Solution 2:[2]
Perhaps you have done your job as the question is so old. But I would like to share an easy way to write an HTML tag on the Laravel mail template.
First of all, you are required to import
use Illuminate\Support\HtmlString;
->line(new HtmlString('Last date: <strong>' . $this->due_date . '</strong>'))
The HtmlString class enable you to write HTML tag on mail body.
It would be helpful for someone who is looking for this type of solution.
Thanks.
Solution 3:[3]
Use normal line breaks with single quotes
'This will create a
new line'
or use \n with double quotes
"This will also create a \n new line"
Solution 4:[4]
I'm not sure which version of Laravel it was introduced in, but you can use Markdown in MailMessage, so HtmlString is not necessary if simple formatting is all that is required.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | John Halsey | 
| Solution 2 | Nazmus Shakib | 
| Solution 3 | Douwe de Haan | 
| Solution 4 | Brendan | 


