Symfony4上的Gandi + SwiftMailer

时间:2019-02-14 18:28:09

标签: php symfony email smtp swiftmailer

我为发布有关symfony4 swiftmailer的第N个问题提前表示歉意,但是由于我始终无法发送电子邮件,因此我认为我的问题可能出在symfony的其他地方。 (nb:最后,我需要使其与GANDI一起使用,但由于涉及更多主题,因此我首先尝试使用GMAIL。)

文档:GANDI SMTP CONF

至少这是我的配置(.env)

APP_ENV=prod (tried all with DEV too)
...
#MAILER_URL=gmail://****@gmail.com:****@localhost
#MAILER_URL=smtp://smtp.gmail.com:587?encryption=tls&username=****&password=****
#MAILER_URL=smtp://mail.gandi.net:25?encryption=tls&auth_mode=login&username=****&password=****
#MAILER_URL=smtp://mail.gandi.net:25?encryption=ssl&auth_mode=login&username=****&password=****
#MAILER_URL=smtp://mail.gandi.net:465?encryption=ssl&auth_mode=login&username=****&password=****
MAILER_URL=smtp://mail.gandi.net:587?encryption=tls&auth_mode=login&username=****&password=****

我也直接在swiftmailer.yaml中尝试过

swiftmailer:
    transport:        gmail
    username:         ****@gmail.com
    password:         *******
    host:             localhost
    port:             465
    encryption:       ssl
    auth-mode:        login
    spool: { type: 'memory' }
    stream_options:
        ssl:
            allow_self_signed: true
            verify_peer: false
            verify_peer_name: false

我确实已将自己的Google帐户设置为启用安全性较低的应用程序。所有gmail请求返回

  

预期的响应代码为235,但得到的代码为“ 535”,消息“ 535-5.7.8,用户名和密码不被接受。”

->我100%确定我的Gmail密码和帐户正确。

我的Gandi请求返回

  

预期的响应代码354,但得到的代码为“ 554”,并显示消息“ 554 5.5.1错误:没有有效的收件人” [] []

->这是发送电子邮件的php代码:

$message = (new \Swift_Message('Test'))
        ->setFrom('****@****.com')
        ->setTo('****@gmail.com')
        ->setBody(
            $this->renderView(
                'email/view.html.twig',
                ['name' => '****', 'surname' => '****']
            ),
            'text/html'
        );

    try {
        $result = $mailer->send($message);
    }
    catch (\Exception $e) {
        var_dump($e->getMessage());
    }

所以我确实有收件人和发件人。

我在Macbook上本地工作,有没有可以阻止电子邮件离开或破坏我发送的电子邮件的软件?

2 个答案:

答案 0 :(得分:0)

SMTP错误消息将表明您尝试发送到(或从)发送的电子邮件地址可能无效。确保电子邮件地址是实际有效的收件箱。

答案 1 :(得分:0)

确保您的密码不包含任何保留的字符,例如! * ' ( ) ; : @ & = + $ , / ?# |

在这里,我用Gandi邮件和Swiftmailer进行配置。

swiftmailer.yaml

swiftmailer:
    url: '%env(MAILER_URL)%'
    spool: { type: 'memory' }

要小心,在本地,您需要删除spool: { type: 'memory'}才能立即发送电子邮件。

.env

MAILER_URL=smtp://mail.gandi.net:465?encryption=ssl&auth_mod=login&username=user@mail.com&password=password1234

此外,您可以使用以下命令行直接尝试配置:php bin/console swiftmailer:email:send