Não tenho certeza de como é comum (boa prática), mas enviar um email é um processo assíncrono típico. Um que pode levar vários segundos e além. Isso faz dele um candidato perfeito para o uso da fila de mensagens.
O método de entrega é de importância secundária, mas os fornecedores terceirizados, como o SendGrid (para emails transacionais - senhas esquecidas, faturas, etc.) ou MailChimp (para boletins informativos e marketing) oferecem um bom valor e provaram ser confiáveis.
Por fila de mensagens, quero dizer RabbitMQ (AMQ), ZeroMQ, Gearman, AWS SQS, etc.
Esses podem ser usados para qualquer tipo de troca de informações entre aplicativos. Nesse caso, é uma informação que certos e-mails precisam ser enviados.
Em termos de informações de entrega, isso pode ser obtido por meio de uma API com esse provedor ou com planos mais caros por meio de retorno de chamada.