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.

Foi útil?

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 com mail(). Se mail() retorna false, Zend_Mail_Transport_Sendmail joga a Zend_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 em Zend_Mail_Protocol_Smtp. Nesse caso, você receberá um Zend_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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top