Use async lettre transports for sending emails
#9961
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
At the moment we are using synchronous
lettretransports for sending emails, which means thatemails.send(...)needs to be wrapped in aspawn_blocking()call to not block the async tokio worker threads.This PR migrates our
Emailsstruct to use async transports underneath. It now offers anasync_send()method, and (for now) asend()method that usesHandle::block_on()to be able to still send emails from blocking worker threads.Unfortunately, some of our test code is currently still mixing sync and async code in interesting ways, which meant that some tests had to be slightly adjusted with
spawn_blocking()calls to make them happy with the new implementation.