2

我想向用户发送确认电子邮件。我确实用 composer 安装了 swiftmailer,这些是我在参数中的配置。yml 和 config.yml

parameters:
database_host: 127.0.0.1
database_port: null
database_name: xxxx
database_user: root
database_password: root
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: xxxxx@xxxxxx.com
mailer_password: xxxx
secret: ea293ee3152cb8522e591a6cb821f950cc67f499
spool:
        type:                 file

mailer_port: 587
mailer_encryption: tls
mailer_logging: '%kernel.debug%'

配置.yml

swiftmailer:
transport: '%mailer_transport%'
host: '%mailer_host%'
username: '%mailer_user%'
password: '%mailer_password%'
spool: { type: memory }

我将此代码添加到我的控制器并进行了测试,但没有发送任何内容:

    $message = \Swift_Message::newInstance()
                ->setSubject('hello')
                ->setFrom('example@gmail.com')
                ->setTo('xx.xx@xxx.tn')
                ->setBody('@servicom/pages/profile_commercial.html.twig', 'text/html');

# Send the message
            $this->get('mailer')
                ->send($message);

我想问一下问题是来自配置还是来自代码。

提前致谢。

4

2 回答 2

1

最后我通过先调试然后添加解决了这个问题,ini_set()所以我分享了这个解决方案:Parameters.yml:

parameters:
    database_host: 127.0.0.1
    database_port: null
    database_name: xxxxx
    database_user: root
    database_password: root
    mailer_transport: smtp
    mailer_host: ssl0.ovh.net
    mailer_user: xxxx@myhost.com
    mailer_password: toguess
    encryption: ssl
    auth_mode: login
    secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

将此添加到函数 send :

 ini_set('SMTP','ssl0.ovh.net');
 ini_set('smtp_port',587);

这对于 Debug :

if ( $this->get('mailer')->send($message)) {
                echo '[SWIFTMAILER] sent email to ' . 'malek.zarkouna@esprit.tn';
                echo '' . $mailLogger->dump();
            } else {
                echo '[SWIFTMAILER] not sending email: ' . $mailLogger->dump();
            }
于 2017-08-15T14:52:42.710 回答
1

看看您是否需要其他一些参数,例如加密(通常是 tls)或端口(通常是 587)。

在那里添加属性的文档

于 2017-08-11T14:42:22.737 回答