Ir ao conteúdo
  • Cadastre-se

PHP Envio de email por formulário em PHP


Ir à solução Resolvido por Fernando Cardoso de Melo,

Posts recomendados

Oi gente.

To quebrando a cabeça aqui. Tenho um formulário no site para enviar por php. Bem simples.

Problema:

Se eu coloco um email para destinatáio do gmail como é o caso, o gmail não aceita receber! Retorna o seguinte:

This is the mail system at host web15f77.uni5.net.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

<[email protected]>: host gmail-smtp-in.l.google.com[142.251.0.26] said:
    550-5.7.1 [187.1.137.113] This message is not RFC 5322 compliant, the issue
    is: 550-5.7.1 duplicate headers. To reduce the amount of spam sent to
    Gmail, this 550-5.7.1 message has been blocked. Please review 550 5.7.1
    RFC 5322 specifications for more information.
    h3-20020a67b703000000b003b347c89ff9si6514493vsf.80 - gsmtp (in reply to end
    of DATA command)

Reporting-muita: dns; web15f77.uni5.net
X-Postfix-Queue-ID: 9ABE7806BD2
X-Postfix-Sender: rfc822; [email protected]
Arrival-Date: Thu,  5 Jan 2023 11:18:38 -0300 (-03)

Final-Recipient: rfc822;[email protected]
Original-Recipient: rfc822;[email protected]
Action: failed
Status: 5.7.1
Remote-muita: dns; gmail-smtp-in.l.google.com
Diagnostic-Code: smtp; 550-5.7.1 [187.1.137.113] This message is not RFC 5322
    compliant, the issue is: 550-5.7.1 duplicate headers. To reduce the amount
    of spam sent to Gmail, this 550-5.7.1 message has been blocked. Please
    review 550 5.7.1  RFC 5322 specifications for more information.
    h3-20020a67b703000000b003b347c89ff9si6514493vsf.80 - gsmtp

 

Pelo que percebi, eles estão dizendo que a duplicidade de headers. Já revidei o código e não achei nada. Se eu coloco outro email de destinatário que não seja do gmail, funciona bem.

 

Alguém mais experiente pode dar uma olhadinha no meu php e ver o que pode estra errado?

Segue código php.

Obrigado

 

<?php
if(isset($_POST['enviar'])) {
$remetente =    "Formulario do Site <[email protected]>";
$destinatario = "Contato pelo site <[email protected]>";
$assunto = "Contato via formulario";

$charset = $_POST['charset'];
$nome = $_POST['nome'];
$email = $_POST['email'];
$telefone = $_POST['telefone'];
$texto = $_POST['texto'];

$corpo = "Nome: ".$nome."<br />Email: ".$email."<br />Telefone: ".$telefone."<br />Mensagem: ".$texto."\r\n";


$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=".$charset."\r\n";
$headers .= "Reply-To: ".$email."\r\n";
$headers .= "From: ".$remetente."\r\n";
$headers .= "Subject: ".$assunto."\r\n";

if(mail($destinatario, $assunto, $corpo, $headers)) {
echo ' ';
}
else {
echo ' ';
}
}
else {
echo '<p>N&atilde; <br /> </p>';
}
?>

 

Link para o comentário
Compartilhar em outros sites

@Fernando Cardoso de Melo

 

Então amigo não vi nada demais, porém pode ser o encode ou formatação.

 

Fiz alguns ajuste no seu código, testa ae ve se funciona!

<?php

try {
    if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['enviar'])) {
        $remetente    = "[email protected]";
        $destinatario = "[email protected]";
        $assunto      = "Contato via formulario";
    
        $nome     = filter_input(INPUT_POST, 'nome');
        $email    = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
        $telefone = filter_input(INPUT_POST, 'telefone');
        $texto    = filter_input(INPUT_POST, 'texto');
    
        if (!$email) {
            throw new Exception("O email({$email}) informado e invalido");
        }

        $templateEmail =<<<HTML
            <div>
                <p><b>Nome: </b> {$nome}</p>
                <p><b>Email: </b> {$email}</p>
                <p><b>Telefone: </b> {$telefone}</p>
                <p><b>Mensagem: \xE0\xe0 </b></p>
                <p>{$texto}</p>
            </div>
HTML;

        $templateEmail = mb_convert_encoding($templateEmail, 'utf-8');

        $headers = implode("\r\n", [
            "MIME-Version: 1.0",
            "Content-type: text/html; charset=\"utf-8\"",
            "From: Formulario do Site <[email protected]>",
            "Reply-To: " . $email,
            "To: Contato pelo site <{$remetente}>",
            "Subject: " . $assunto
        ]);

        $headers .= "X-Mailer: PHP/" . phpversion();

        if (mail($destinatario, $assunto, $templateEmail, $headers)) {
            echo "<h3>", "Email enviado com suceso", "<h3>";
            die();
        }

        throw new Exception('Ocorreu uma falha na tentativa de enviar o email');
    }
} catch (Exception $e) {
    echo "<h3>", $e->getMessage(), "<h3>";
}

 

Link para o comentário
Compartilhar em outros sites

  • Solução

@GabrielSennaMs Oi Gabriel.

Consegui faze funcionar. Usei outro PHP que achei. Vou postar aqui caso alguém mais precise.

Obrigado

<?php
if (isset($_POST['BTEnvia'])) {
 
 //Variaveis de POST, Alterar somente se necessário 
 //====================================================
 $nome = $_POST['nome'];
 $email = $_POST['email'];
 $telefone = $_POST['telefone']; 
 $mensagem = $_POST['mensagem'];
 //====================================================
 
 //REMETENTE --> ESTE EMAIL TEM QUE SER VALIDO DO DOMINIO
 //==================================================== 
 $email_remetente = "email@doseudominio"; // deve ser uma conta de email do seu dominio 
 //====================================================
 
 //Configurações do email, ajustar conforme necessidade
 //==================================================== 
 $email_destinatario = "email@querecebe"; // pode ser qualquer email que receberá as mensagens
 $email_reply = "$email"; 
 $email_assunto = "Contato formmail"; // Este será o assunto da mensagem
 //====================================================
 
 //Monta o Corpo da Mensagem
 //====================================================
 $email_conteudo = "Nome = $nome \n"; 
 $email_conteudo .= "Email = $email \n";
 $email_conteudo .= "Telefone = $telefone \n"; 
 $email_conteudo .= "Mensagem = $mensagem \n"; 
 //====================================================
 
 //Seta os Headers (Alterar somente caso necessario) 
 //==================================================== 
 $email_headers = implode ( "\n",array ( "From: $email_remetente", "Reply-To: $email_reply", "Return-Path: $email_remetente","MIME-Version: 1.0","X-Priority: 3","Content-Type: text/html; charset=UTF-8" ) );
 //====================================================
 
 //Enviando o email 
 //==================================================== 
 if (mail ($email_destinatario, $email_assunto, nl2br($email_conteudo), $email_headers)){ 
 echo "</b>E-Mail enviado com sucesso!</b>"; 
 } 
 else{ 
 echo "</b>Falha no envio do E-Mail!</b>"; } 
 //====================================================
} 
?>
 
 <form action="<? $PHP_SELF; ?>" method="POST"> 
 <p> 
 Nome:<br /> 
 <input type="text" size="30" name="nome"> 
 </p>   
 <p> 
 E-mail:<br /> 
 <input type="text" size="30" name="email"> 
 </p>   
 <p> 
 Telefone:<br /> 
 <input type="text" size="35" name="telefone"> 
 </p>   
 <p> 
 Mensagem:<br /> 
 <input type="text" size="35" name="mensagem"> 
 </p>   
 <p>
          <input type="submit" name="BTEnvia" value="Enviar"> 
   <input type="reset" name="BTApaga" value="Apagar">
        </p>

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!