通过 OVH 邮件使用 swiftmailer 发送邮件

Sending mail with swiftmailer via OVH mail

我想向用户发送确认邮件。我确实使用 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%'

config.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);

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

提前致谢。

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

添加属性的文档there

最后我通过先调试然后添加 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

将此添加到函数发送中:

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

这是用于调试的:

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();
            }