首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有SMTP的Symfony 6邮件DSN不发送邮件

带有SMTP的Symfony 6邮件DSN不发送邮件
EN

Stack Overflow用户
提问于 2022-12-01 11:07:04
回答 1查看 33关注 0票数 1

我正在使用不同的SMTP服务器尝试Symfony 6 Mailer,但是没有一个是工作的。

消息是排队的,但没有发送。我尝试从不同的服务器放弃防火墙或端口问题。

没有日志消息或异常,所以我很迷茫。

这是我尝试过的一些DSN:

代码语言:javascript
运行
复制
MAILER_DSN="smtp://email%40example.com:123456@host.example.com:587?encryption=tls"
MAILER_DSN="smtp://email@example.com:123456@host.example.com:587?encryption=tls"
MAILER_DSN="smtp://email@example.com:123456@host.example.com:587"

实际上,我尝试了许多DSN组合,有/没有加密。我怀疑问题在DSN字符串中,因为如果我尝试错误的主机或密码,效果是一样的。

这是一个长期存在的问题,我已经很久没能解决了。

这是发送代码:

代码语言:javascript
运行
复制
use Symfony\Component\Mime\Email;

$email = (new Email())
        ->from($this->parameterBag->get('app.message.email_from'))
        ->to($to)
        ->subject($subject)
        ->text($text)
        ->html($text);

$sentMessage = $this->mailer->send($email); 

mailer.yaml内容:

代码语言:javascript
运行
复制
framework:
    mailer:
        dsn: '%env(MAILER_DSN)%'

messenger.yaml内容:

代码语言:javascript
运行
复制
framework:
    messenger:
        failure_transport: failed

        transports:
            # https://symfony.com/doc/current/messenger.html#transport-configuration
            async:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                options:
                    use_notify: true
                    check_delayed_interval: 60000
                retry_strategy:
                    max_retries: 3
                    multiplier: 2
            failed: 'doctrine://default?queue_name=failed'
            # sync: 'sync://'

        routing:
            Symfony\Component\Mailer\Messenger\SendEmailMessage: async
            Symfony\Component\Notifier\Message\ChatMessage: async
            Symfony\Component\Notifier\Message\SmsMessage: async

            # Route your messages to the transports
            # 'App\Message\YourMessage': async
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-01 11:56:36

使用当前的信使配置,电子邮件不是直接发送的,而是只有在调用messenger:consume时才发送。

这是因为信使是排队电子邮件(或其他消息,如短信),而不是立即发送。

您可以了解更多关于messenger组件的信息,但是如果您想暂时忽略它,只需通过修改传输配置来同步发送电子邮件。

代码语言:javascript
运行
复制
framework:
    messenger:
        transports:
            async: 'sync://'
        routing:
            Symfony\Component\Mailer\Messenger\SendEmailMessage: async
            Symfony\Component\Notifier\Message\ChatMessage: async
            Symfony\Component\Notifier\Message\SmsMessage: async

            # Route your messages to the transports
            # 'App\Message\YourMessage': async
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74640882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档