How to Use Gmail to Send Emails

3.3 version

How to Use Gmail to Send Emails

During development, instead of using a regular SMTP server to send emails, you might find using Gmail easier and more practical. The SwiftmailerBundle makes it really easy.

In the development configuration file, change the transport setting to gmail and set the username and password to the Google credentials:

  • YAML
    1
    2
    3
    4
    5
    # app/config/config_dev.yml
    swiftmailer:
        transport: gmail
        username:  your_gmail_username
        password:  your_gmail_password
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    <!-- app/config/config_dev.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:swiftmailer="http://symfony.com/schema/dic/swiftmailer"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/swiftmailer
            http://symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd">
    
        <!-- ... -->
        <swiftmailer:config
            transport="gmail"
            username="your_gmail_username"
            password="your_gmail_password"
        />
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    // app/config/config_dev.php
    $container->loadFromExtension('swiftmailer', array(
        'transport' => 'gmail',
        'username'  => 'your_gmail_username',
        'password'  => 'your_gmail_password',
    ));
    

Tip

It's more convenient to configure these options in the parameters.yml file:

1
2
3
4
5
# app/config/parameters.yml
parameters:
    # ...
    mailer_user:     your_gmail_username
    mailer_password: your_gmail_password
  • YAML
    1
    2
    3
    4
    5
    # app/config/config_dev.yml
    swiftmailer:
        transport: gmail
        username:  '%mailer_user%'
        password:  '%mailer_password%'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    <!-- app/config/config_dev.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:swiftmailer="http://symfony.com/schema/dic/swiftmailer"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/swiftmailer
            http://symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd">
    
        <!-- ... -->
        <swiftmailer:config
            transport="gmail"
            username="%mailer_user%"
            password="%mailer_password%"
        />
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    // app/config/config_dev.php
    $container->loadFromExtension('swiftmailer', array(
        'transport' => 'gmail',
        'username'  => '%mailer_user%',
        'password'  => '%mailer_password%',
    ));
    

Redefining the Default Configuration Parameters

The gmail transport is simply a shortcut that uses the smtp transport and sets these options:

Option Value
encryption ssl
auth_mode login
host smtp.gmail.com

If your application uses tls encryption or oauth authentication, you must override the default options by defining the encryption and auth_mode parameters.

If your Gmail account uses 2-Step-Verification, you must generate an App password and use it as the value of the mailer_password parameter. You must also ensure that you allow less secure apps to access your Gmail account.

See the Swiftmailer configuration reference for more details.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.