Como verificar um e -mail foi enviado ao usar o Zend_mail?
-
21-09-2019 - |
Pergunta
Estou usando a estrutura Zend para enviar e -mails. Depois que a configuração é concluída e o código escrito tudo se resume a uma chamada:
$Mail->send($Transport)
Como posso verificar se este e -mail foi enviado corretamente? Eu li em algum lugar que Zend Mail joga uma exceção, mas outras pessoas disseram que esse às vezes não é o caso.
Qual é a maneira programática à prova de balas de garantir que o correio tenha sido enviado corretamente ao usar o Zend_mail?
EDIT: Quando quero dizer enviado, quero dizer enviado ao servidor SMTP.
Solução
Geralmente Zend_Mail
fará uma exceção se houver algo errado acontecendo no processo de envio - mas isso depende fortemente do Zend_Mail_Transport_*
sendo usado.
Você tem duas opções aqui:
Zend_Mail_Transport_Sendmail
(o transporte padrão) conta commail()
. Semail()
retornafalse
,Zend_Mail_Transport_Sendmail
joga aZend_Mail_Transport_Exception
(Incapaz de enviar e -mail). O valor de retorno em si não é muito confiável. É isso que o manual diz sobre o valor de retorno:Retorna true se o e -mail foi aceito com sucesso para entrega, false de outra forma.
É importante observar que apenas porque o correio foi aceito para entrega, isso não significa que o correio realmente atinja o destino pretendido.
Zend_Mail_Transport_Smtp
envia o email usando o protocolo SMTP que é encapsulado emZend_Mail_Protocol_Smtp
. Nesse caso, você receberá umZend_Mail_Protocol_Exception
Sempre que algo viola o protocolo SMTP (enviando e -mails sem fornecer o endereço de um remetente, por exemplo) ou o servidor STMP relata um erro ou o tempo de conexão.Portanto, se nenhuma exceção for lançada ao conversar com o servidor STMP, você pode ter certeza de que o servidor remoto pelo menos aceitou seu email.
Outras dicas
Eu acho que não é. Se "Enviar" falhar, você recebe uma exceção. Mas isso é apenas um cheque, que a função send () funcionou corretamente. Isso não significa que o e -mail ganhou.
Eu acho que a única maneira de Ensude que o e -mail foi entregue é inserir um link de código de confirmação inteira e fazer o usuário clicar nele.