Search code examples
phpemaillaravel-4gmailhtml-email

Laravel email template URLs not working in Gmail


I am using Laravel 4 smtp mail to send mail to users. When I send mails to Gmail, the logo and URLs didn't show up as intended. When I checked the urls, it showed localhost instead of my domain name. I don't know why it's happening.

My email template:

<!DOCTYPE html>
<html lang="en-US">
    <head>
        <meta charset="utf-8">
        <link href='https://fonts.googleapis.com/css?family=Dosis:400,500,600,700' rel='stylesheet' type='text/css'>
        <style>
        body {
            font-family: 'Dosis', sans-serif;
            font-size:14px;
            color: #333;
        }
        #table-wrap {
            background:#fafafa;
            border-bottom: 5px solid #eee;
            border-top: 5px solid #EC4F48;
        }
        #site_logo{
            background: #EC4F48; 
            border-bottom: 2px solid #EC4F48;
            -webkit-border-bottom-right-radius: 2px;
            -webkit-border-bottom-left-radius: 2px;
            -moz-border-radius-bottomright: 2px;
            -moz-border-radius-bottomleft: 2px;
            border-bottom-right-radius: 2px;
            border-bottom-left-radius: 2px;
        }
        </style>        
    </head>
    <body>
        <table id="table-wrap" width="100%" cellpadding="0" cellspacing="0" style="border-radius:3px; -webkit-border-radius:3px; -moz-border-radius:3px;">
            <tbody>
                <tr>
                    <td align="left" style="padding:3px; border-bottom: 2px solid #fadc65;" width="60%">
                        <h3 style="margin-left: 15px;">Hi, {{{ $username }}}!</h3>
                    </td>
                    <td align="center" id="site_logo">
                        <img src="{{ asset('dist/img/logo.png') }}" width="200" style="margin-left: 10px;" />
                    </td>
                </tr>
                <tr>
                    <td align="center" colspan="2">
                        <br />
                            <h2>Welcome to mydomain.com !</h2>
                            <h2>Thanks for registering to Mysite.</h2>
                            <h4><a href="{{ url('user/verify/'.$code) }}" target="_blank">Click here to confirm your email...</a></h4>
                        <br />
                    </td>
                </tr>
                <tr>
                    <td align="left">
                        <p style="margin-left: 20px; color: #666;">
                         www.mydomain.com&nbsp; | &nbsp;Email : [email protected]
                        </p>
                    </td>
                </tr>
            </tbody>
        </table>


    </body>
</html>

Solution

  • When you use CLI to generate any view Laravel uses url parameter to set domain. By default its value is set to http://localhost so you need to change this parameter to your domain.

    The parameter is located in app.php in config folder.

    Laravel comment for Application URL: This URL is used by the console to properly generate URLs when using the Artisan command line tool. You should set this to the root of your application so that it is used when running Artisan tasks.