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

3

我希望给用户发送确认电子邮件。我已经通过composer安装了swiftmailer,并在parameters.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);

我想问一下,问题是来自配置还是代码方面。谢谢。
2个回答

1
看看是否需要其他参数,例如加密(通常是TLS)或端口(一般为587)。
添加属性的文档在这里

我应该将这些参数添加到parameters.yml还是config.yml或config_dev.yml中? - Malek Zarkouna
1
在 parameters.yml 文件中,您可以设置变量(variable_name: value),而在 config.yml 文件中,您可以将这些变量链接到其中一个参数(parameter: "%variable_name%")。 - Kall Drogo
1
那是我解决同样问题的方式。你确定你的OVH配置正确吗?否则,我不知道,抱歉... - Kall Drogo
我改用 Gmail 了,但是什么都发不出去!!你能否提供一下你的 Gmail 配置? - Malek Zarkouna
1
我遵循OVH的指示:https://docs.ovh.com/fr/fr/web/emails/mail-mutualise-guide-configuration-dun-e-mail-mutualise-ovh-sur-linterface-de-gmail/,我正在寻找英文版本,等我找到后再回来。 - Kall Drogo
显示剩余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);

这是关于调试的内容:
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();
            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接