O que é um mecanismo comum para enviar por e-mail em segundo plano?

1

Quando os usuários se inscrevem em meu site, a conexão do meu servidor para o provedor SMTP de terceiros é muito ruim e o aplicativo leva de alguns segundos a alguns minutos para se conectar. Enquanto ele está tentando se conectar e enviar, os usuários são forçados a esperar lá e às vezes eles simplesmente desistem e deixam o site.

Esta é uma experiência de usuário horrível. O que é uma boa maneira de fazer isso parecer instantâneo (ter que hospedar nosso próprio servidor de email não é uma opção neste momento)? Alguma maneira de executar isso em segundo plano? Talvez usando algum tipo de mecanismo de enfileiramento?

Estou usando a pilha LNAMP em uma máquina CentOS 5 x64. App está usando o CodeIgniter.

EDITAR:

Parece que usar um servidor de e-mail local para usar como retransmissão é uma solução comum. Mas como logar ou rastrear se o email foi entregue corretamente usando este método?

Sidenote: Alguns ESPs fornecem uma API REST para entrega de email (a nossa também). Atualmente, usamos SMTP e não sua API REST.

    
por lamp_scaler 04.10.2011 / 17:33

3 respostas

1

Você pode usar o Postfix como um nullmailer (retransmitir apenas para o ISP). Isso nada mais é do que um quatro-liner:

main.cf

myorigin = $mydomain
relayhost = $mydomain
inet_interfaces = loopback-only
local_transport = error:local delivery is disabled

Referência: link

    
por 04.10.2011 / 19:57
4

Execute um sendmail / qmail / postfix local - o que quer que seja, configure o servidor smtp para localhost. O MTA local será enfileirado e entregue quando puder (imediatamente ou na próxima execução da fila).

No seu sistema:

# yum -y install sendmail
# chkconfig sendmail on
# service sendmail start

shoudl é suficiente.

Eu conheço bubke sobre CodeIgniter, então eu não posso te ajudar lá.

    
por 04.10.2011 / 17:39
-3

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.

    
por 08.10.2011 / 10:46