Skip to content

[Mailer] SMTP transport fails for long running processes  #36301

Closed
@tomme87

Description

@tomme87

Symfony version(s) affected: 5.0.5+

Description
Happens if sending a email, and after 10 seconds (and before 100 seconds) a new email (on the same connection) is sent, then a TransportException is thrown:

Expected response code "250" but got code "451", with message "451 4.4.2 Timeout waiting for data from client.".

If sending another email an other TransportException is thrown:

Unable to write bytes on the wire.

This happens until I wait for 100 seconds.

How to reproduce
Use symfony/messenger, run message:consume and send a Email, wait for between 10 and 100 seconds then send a new Email.

I have only been able to reproduce this using Amazon SMTP server, but it might be others too.

Possible Solution
setting $pingThreshold in SmtpTransport to 10 seams to solve the issue.

Additional context

14:32:24 INFO      [messenger] Received message Symfony\Component\Mailer\Messenger\SendEmailMessage ["message" => Symfony\Component\Mailer\Messenger\SendEmailMessage^ { …},"class" => "Symfony\Component\Mailer\Messenger\SendEmailMessage"]                                                                                                                           
14:32:24 ERROR     [messenger] Error thrown while handling message Symfony\Component\Mailer\Messenger\SendEmailMessage. Sending for retry #1 using 1000 ms delay. Error: "Expected response code "250" but got code "451", with message "451 4.4.2 Timeout waiting for data from client."." ["message" => Symfony\Component\Mailer\Messenger\SendEmailMessage^ { …},"class" => "Symfony\Component\Mailer\Messenger\SendEmailMessage","retryCount" => 1,"delay" => 1000,"error" => "Expected response code "250" but got code "451", with message "451 4.4.2 Timeout waiting for data from client.".","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]
14:32:24 INFO      [messenger] Received message Symfony\Component\Mailer\Messenger\SendEmailMessage ["message" => Symfony\Component\Mailer\Messenger\SendEmailMessage^ { …},"class" => "Symfony\Component\Mailer\Messenger\SendEmailMessage"]                                                                                                                           
14:32:24 ERROR     [messenger] Error thrown while handling message Symfony\Component\Mailer\Messenger\SendEmailMessage. Sending for retry #1 using 1000 ms delay. Error: "Unable to write bytes on the wire." ["message" => Symfony\Component\Mailer\Messenger\SendEmailMessage^ { …},"class" => "Symfony\Component\Mailer\Messenger\SendEmailMessage","retryCount" => 1,"delay" => 1000,"error" => "Unable to write bytes on the wire.","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]

Looks like it happens after #35633 was introduced.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions