Jump to content
Fábio BN

Envio de E-mails via PHP com Notificação de Inválidos ou Atraso?

Recommended Posts

Olá pessoal.
Vocês saberiam me informar se no PHP eu consigo receber aquelas notificações através do e-mail de remetente, de quando um e-mail enviado está inválido ou com atraso na entrega?
Exemplo:
Mandei um e-mail via PHP e o e-mail estava inválido, então recebo um e-mail pelo e-mail de remetente assim:
 

O Remenetnte no caso do ASP vem com este e-mail padrão ( postmaster@ipdot.com.br ), no PHP não sei como funciona.
Notificação de status de entrega (falha)

Esta é uma notificação de status de entrega gerada automaticamente.

Não é possível entregar a mensagem aos destinatários a seguir por não ser possível conectar-se com êxito ao servidor de email de destino.

email@inválido.com.br

 

Eu quando enviava e-mail pelo ASP, eu recebia essas notificações tanto de e-mail inválido como atraso na entrega, e o e-mail que vinha como remetente era um tal de ( postmaster@ipdot.com.br ), será que no PHP eu consigo esse recurso?

Abraços!

Fábio!

Share this post


Link to post
Share on other sites

Se tiver usando um Webmail de um cPanel por exemplo, isso acontece também. Caso o email seja inválido, o postmaster retorna automaticamente um erro. Não apenas email errado, caso a caixa de entrada do camarada esteja cheia também, por exemplo.

 

Agora fazer isso pelo PHP eu particularmente nunca vi, o que dá pra saber é se o email foi disparado porque retorna um boolean, agora se chegou ao destinatário é outra história. Também tem como verificar se o email existe, antes de disparar.

 

Tem algumas coisas na net para saber se o email foi lido e tal, mas especifico para ter certeza que chegou eu nunca vi. Talvez alguém com mais experiência saiba como fazer. Ficarei acompanhando uma resposta também. Valeu!

 

@Edit

 

Me confundi um pouco na sua questão, tem sim como saber se um email é válido, pode dar uma olhada aqui = https://imasters.com.br/apis-microsservicos/verificacao-de-e-mail-no-php-usando-api-mailboxlayer

 

Acredito que tem outras formas também.

Share this post


Link to post
Share on other sites

Olá. Eu trabalhei com ASP por um bom tempo, e o servidor lá era Windows Server 2003, lá sempre que enviamos um -email via código ASP e o email era inválido ou tinha atraso na entrega eu recebia um e-mail de retorno com o remetente  ( postmaster@ipdot.com.br ) informando sobre o erro. Pode ser que o PHP não tenha esse recurso mas tenha como validar no ato do envio como você citou neste LINK acima, vou olhar este link e ver se acho alguma forma deu saber quais e-mails estão inválidos.

Obrigado!

Share this post


Link to post
Share on other sites
1 minuto atrás, Fábio BN disse:

Olá. Eu trabalhei com ASP por um bom tempo, e o servidor lá era Windows Server 2003, lá sempre que enviamos um -email via código ASP e o email era inválido ou tinha atraso na entrega eu recebia um e-mail de retorno com o remetente  ( postmaster@ipdot.com.br ) informando sobre o erro. Pode ser que o PHP não tenha esse recurso mas tenha como validar no ato do envio como você citou neste LINK acima, vou olhar este link e ver se acho alguma forma deu saber quais e-mails estão inválidos.

Obrigado!

Se tiver usando servidor Linux com cPanel isso também acontece automaticamente, você envia email via PHP e se o email não existir ou a caixa de entrada do destinatário estiver cheia você também recebe um email do postmaster@... com o erro. É o mesmo recurso que você citou do Windows Server. Antes de enviar você consegue validar muita coisa com expressão regular e até se o domínio do email é válido, como no link que deixei. Qualquer coisa retorna aí, abraço!

Share this post


Link to post
Share on other sites

Olá.

E achava que meu problema seria por que eu estava usando a linha no padrão abaixo incompleta:
$headers = 'From: Nome do Remetente <e-mail@remetente.com.br>' . "\r\n" ;
    

Então mudei para o padrão adicionando mais comandos:
$headers = 'From: Nome do Remetente <e-mail@remetente.com.br>' . "\r\n" .'Reply-To: e-mail@remetente.com.br' . "\r\n" .'X-Mailer: PHP/' . phpversion();
   
E mesmo assim os e-mails inválidos não chegam, notei que pelo ASP eu recebo os inválidos com outros remetentes também, vou citar alguns:
- Mail Delivery Subsystem <MAILER-DAEMON@mx0a-00038001.pphosted.com>
- Mail Delivery System <MAILER-DAEMON@mx3.bol.com.br>
- postmaster@ipdot.com.br
- Mail Delivery System <MAILER-DAEMON@mx.uol.com.br>

E ainda recebo os retornos de repostas automáticas quando a pessoa tem essa função cadastrada como avisos de férias por exemplo.

Já quando mando e-mail pelo PHP, se o e-mail tiver correto a pessoa recebe normal, e se ela clicar em responder eu recebo a mensagem pelo OutLook, mas se for algo automático que não está funcionando, como e-mails inválidos, avisos de férias, não sei por que.

Abraços!

Share this post


Link to post
Share on other sites
6 horas atrás, marcosmarcolin disse:

Está enviando via localhost ou em uma hospedagem PHP?

Olá. É via hospedagem PHP em Linux mesmo. Acho estranho pois independente do e-mail de retorno que eu use, seja ele  o e-mail do domínio ou algum outro e-mail, em nenhum deles recebo as notificações,. Abraço.

Share this post


Link to post
Share on other sites

Olá.
A única forma que encontrei de receber as notificações de erro foi usando PHPMailer que serve para o envio de e-mails autenticado, vou adotar esse script agora.

Abraços!

Share this post


Link to post
Share on other sites
7 horas atrás, Fábio BN disse:

Olá.
A única forma que encontrei de receber as notificações de erro foi usando PHPMailer que serve para o envio de e-mails autenticado, vou adotar esse script agora.

Abraços!

Excelente, é melhor classe para trabalhar com envio de e-mails. Que bom que deu certo, abraço!

Share this post


Link to post
Share on other sites
2 horas atrás, marcosmarcolin disse:

Excelente, é melhor classe para trabalhar com envio de e-mails. Que bom que deu certo, abraço!

Sim, é verdade. Eu não o conhecia, antes eu estava usando aquele "mail" que vem no PHP, cheguei a testar alguns comando nele para receber notificações mas não funcionou, estão pesquisando mais a fundo achei o PHPMailer que faz envio autenticado via smtp, e tem mais algumas outras funcionalidades. Abraços.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Joob
      Boas Malta,
       
      Não sei porquê que não estou a conseguir remover os ficheiros após minutos..
      Por exemplo ele vai buscar o deleteshared_links e apaga a partilha feita após o tempo colocado, mas no deletezips já não apaga.
      Supostamente ele vai buscar os ficheiros da pasta zip e deveria apagar.
       
      Resolvido
       
      Obrigado :)
    • By adamo marinho
      Estou tentando achar numeros iguais dentro de arrays criadas usando a função array_intersect, porem para facilitar o meu projeto, precisaria incluir variaveis dentro das arrays, alguem pode ajudar por favor?

      <?php $v1_1 = 1; $v1_2 = 2; $v1_3 = 3; $v1_4 = 4; $v1_5 = 5; $v1 = array($v1_1, $v1_2, $v1_3, $v1_4, $v1_5); $v2_1 = 6; $v2_2 = 7; $v2_3 = 8; $v2_4 = 9; $v2_5 = 10; $v2 = array($v2_1, $v2_2, $v2_3, $v2_4, $v2_5); $v3_1 = 10; $v3_2 = 9; $v3_3 = 8; $v3_4 = 7; $v3_5 = 6; $v3 = array($v3_1, $v3_2, $v3_3, $v3_4, $v3_5); $v4_1 = 5; $v4_2 = 4; $v4_3 = 3; $v4_4 = 2; $v4_5 = 1; $v4 = array($v4_1, $v4_2, $v4_3, $v4_4, $v4_5); $resultado = array_intersect($v1, $v2, $v3, $v4 ); var_dump($resultado); ?>
    • By babylon
      Ola amigos,
       
      Estava querendo criar algo para meu site, um botao igual do site abaixo para calcular formas de pagamento "ver formas de pagamento":
       
      https://www.chipart.com.br/pc-gamer-level-one-black-amd-3400g
       
      Segue imagem em anexo.
       
      Alguem poderia me ajudar se tem algum script algo pronto ou que ajude para abrir pop up modal?
       
      Obrigado a todos.
       
       

    • By srs1999_
      Tópico
       
      Site em Código
      Sobre desenvolver sites sem o wordpress que ja tá tudo ali feito que seja um site dinâmico ou seja com banco de dados , APIs de pagamento, Painel para o usuário ,  além de todas  as funções que tem no wordpress e você teria propriedade pra explicar sobre detalhes mais técnicos da produção onde no wordpress só quem entende de progrqmação explicaria algum detalhe técnico 
      Então usando basicamente : 
      FRONT END 
      HTML 
       CSS 
      JAVASCRIPT 
      ALGUMA DE BACKEND COMO PHP E BANCO DE DADOS
      Pode se criar sites/sistemas tão bons ou melhores que no wordpress
       
      Fato : o proprio wordpress é feito em php e ate o proprio facebook tbm em php
      Fato 2 :  cerca de 70% dos sites são feitos em Wordpress
       
      Acho esse lance de procurar o caminho mais fácil limita muito a pessoa por exemplo é facil editar imagens no paint bem intuitivo , agora para editar no photoshop com muitas outras possibilidades  acaba sendo importante ir explorando essa elaboração mais difícil  com um mesmo objetivo. No caso do exemplo ( editar imagens )  
       
      Reflexão:
      Vale a pena se dedicar a trabalhar com a ferramenta Wordpress apenas por ser um meio rápido de ganhar dinheiro ?
      Ou trabalhar sem wordpress  usando tudo que exigido pra criar coisas originais mais que não seria tão rápido a produção. Mas creio que além dos sites feitos também geraria a possibildade de vender o sistema web criado para o cliente personalizar .
       
      Você Desenvolveria de que forma :
       Wordpress apenas ?
       
      Conhecer programação pra trabalhar 
      com  Wordpress ?
       
      Produzir tudo só com programação totalmente dinâmico sem  Wordpress?
    • By violin101
      Caros amigos
       
      saudações...
       
      Peço desculpa, se postei minha dúvida em local errado.
       
      Tenho um formulário onde valido todos os campos e após clicar no BUTTON para adicionar, tenho uma função que muda o TITLE e deixa desabilitado.
       
      O problema é o seguinte:
      - caso algum campo fica em branco, após validar o formulário e mudar o BUTTON, não consigo depois de preenchido HABILITAR novamente o button.
       
      Observação:
      1) após preencher o campo que ficou em branco, como faço para HABILITAR o button novamente e mudar o title do button ?
       
       
      na VIEW está assim:
      <form action="<?php echo current_url(); ?>" id="frmEstoque" method="post" onsubmit="this.btn_adc.disabled=true;" > <div class="card-body"> <div class="row"> <!---Todos os campos do Formulário---> </div> </div> <div class="card-footer" style="text-align:center;"> <input type="hidden" id="idCli" name="idCli" value="<?php echo $cliente->idClientes; ?>" /> <a href="<?php echo base_url() ?>admin/estoque" id="" class="btn btn-danger"><i class="fa fa-undo"></i> Voltar</a> &nbsp; <button type="submit" id="btn_adc" name="btn_adc" class="btn btn-primary">Adicionar</button> </div> </form>  
      na JavaScript está assim:
      <script> //Função para Mudar o VALUE do Button Adicionar Veículo document.getElementById("btn_adc").addEventListener("click",function(){ this.innerHTML = this.value++ || 'Aguarde...'; },false); </script> /* Observação: 1) como removo a função acima, após validar o formulário e esse encontrar algum campo vazio. 2) após preencher o campo que ficou em branco, HABILITAR o button novamente. */ <script type="text/javascript"> $(document).ready(function(){ //Função para Validar Formulário $('#frmEstoque').validate({ rules :{ etq_categcars:{ required: true}, etq_destaq:{ required: true}, etq_status:{ required: true} }, messages:{ etq_categcars :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'}, etq_destaq :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'}, etq_status :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'} }, errorClass: "help-inline", errorElement: "span", highlight:function(element, errorClass, validClass) { $(element).parents('.form-group').addClass('error'); }, unhighlight: function(element, errorClass, validClass) { $(element).parents('.form-group').removeClass('error'); $(element).parents('.form-group').addClass('success'); } }); //Status dos Botões ADICIONAR - iniciar como desabilitado. document.getElementById("btn_adc").disabled = true; }); function statusButton(){ //valida conteudo do input if ($("input[name=etq_vlrcpr]").val() != 0 && $("input[name=etq_vlrvda]").val() != 0) { //habilita o botão document.getElementById("btn_adc").disabled = false; } else { //desabilita o botão se o conteúdo do input ficar em branco document.getElementById("btn_adc").disabled = true; } } </script>  
      Grato,
       
      Cesar
       
       
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.