我正在使用不同的SMTP服务器尝试Symfony 6 Mailer,但是没有一个是工作的。
消息是排队的,但没有发送。我尝试从不同的服务器放弃防火墙或端口问题。
没有日志消息或异常,所以我很迷茫。
这是我尝试过的一些DSN:
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字符串中,因为如果我尝试错误的主机或密码,效果是一样的。
这是一个长期存在的问题,我已经很久没能解决了。
这是发送代码:
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内容:
framework:
mailer:
dsn: '%env(MAILER_DSN)%'和messenger.yaml内容:
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发布于 2022-12-01 11:56:36
使用当前的信使配置,电子邮件不是直接发送的,而是只有在调用messenger:consume时才发送。
这是因为信使是排队电子邮件(或其他消息,如短信),而不是立即发送。
您可以了解更多关于messenger组件的信息,但是如果您想暂时忽略它,只需通过修改传输配置来同步发送电子邮件。
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': asynchttps://stackoverflow.com/questions/74640882
复制相似问题