如何使用Gmail来发送邮件

3.4 版本
维护中的版本

在开发过程中,若不使用常规的SMTP服务器来发邮件的话,你可能会发现使用Gmail服务器是更为简单的实践方案。SwiftmailerBundle令Gmail邮件发送相当容易。

在开发版配置文件中,修改transport选项,将其设为gmail,然后将usernamepassword设置为Google账号凭据:

1
2
3
4
5
# app/config/config_dev.yml
swiftmailer:
    transport: gmail
    username:  your_gmail_username
    password:  your_gmail_password
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>
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',
));

把这些选项配置到parameters.yml中则更为简便:

1
2
3
4
5
# app/config/parameters.yml
parameters:
    # ...
    mailer_user:     your_gmail_username
    mailer_password: your_gmail_password
1
2
3
4
5
# app/config/config_dev.yml
swiftmailer:
    transport: gmail
    username:  "%mailer_user%"
    password:  "%mailer_password%"
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>
1
2
3
4
5
6
// app/config/config_dev.php
$container->loadFromExtension('swiftmailer', array(
    'transport' => 'gmail',
    'username'  => '%mailer_user%',
    'password'  => '%mailer_password%',
));

重新定义默认配置参数 

gmail transport是一个简化的快捷方式,它使用了smtp传输方式,并且设置了如下选项:

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

如果你的程序使用了tls加密或oauth验证方式,你必须通过encryptionauth_mode参数来覆写默认选项。

如果你的Gmail账户使用了“二步验证”(2-Step-Verification),你必须生成一个App密码,然后使用它作为mailer_password参数的值。你必须确保允许不安全程序访问你的Gmail账号

参考Swiftmailer configuration reference以了解细节。

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)