PHP Form with Attachment

Asked

Viewed 1,026 times

0

Good night guys, I’m having a question. I created an application form and in this form the person should send the proof of payment, however, instead of sending as an attachment in my email, it comes as a simple message

Formulario.php

<div class="col-md-12 formulario">

<form action="envia-mercadolivre.php" method="POST">

<input type="number" name="numerocompra" placeholder="Qual é o Número da Compra ? ex:#1234567" required/>  

<input type="text" name="nomecomprador" placeholder="Nome do Comprador" required/>  



<input type="number" name="telefonecomprador" placeholder="Telefone do Comprador" required/>  

<div class="pagamento-confirmacao">
<label> Comprovante de Pagamento. Imagem nitida. </label>
<input type="file" name="comprovantepagamento" placeholder="Anexar Imagem Do Comprovante" required/>  
</div>
<select  class="form-control" name="tipodeinscricao">
          <option class="form_campos" value="Tipo de Inscriçao" selected>Qual o Tipo De Inscrição? (conforme o pagamento) *</option>
           <option class="form_campos" value="Prêmio">Prêmio</option>
          <option class="form_campos" value="Padrão">Padrão</option>
        </select>

<select  class="form-control" name="qualplataforma">
          <option class="form_campos" value="Qual sua Plataforma" selected>Qual sua Plataforma?</option>
           <option class="form_campos" value="PS4">PS4</option>
          <option class="form_campos" value="XBOX ONE">XBOX ONE</option>
                    <option class="form_campos" value="PC">PC</option>
        </select>
<select  class="form-control" name="confirmarplataforma">
          <option class="form_campos" value="Confirme sua Plataforma" selected>Confirme sua Plataforma</option>
           <option class="form_campos" value="PS4">PS4</option>
          <option class="form_campos" value="XBOX ONE">XBOX ONE</option>
                    <option class="form_campos" value="PC">PC</option>
        </select>
<input type="text" name="nomeequipe" placeholder="Nome completo da equipe" required/>  

<input type="text" name="emailequipe" placeholder="E-mail da equipe" required/>  

<div class="pagamento-confirmacao">
<label> Logo da equipe </label>
<input type="file" name="logoequipe" placeholder="Logo da equipe" required/>  
</div>

<input type="number" name="idlider" placeholder="ID Líder - Verifique atentamente o id online de cada jogador" required/>  
<input type="number" name="idjogador2" placeholder="ID JOGADOR 2 - Verifique atentamente o id online de cada jogador" required/>   
<input type="number" name="idjogador3" placeholder="ID JOGADOR 3 - Verifique atentamente o id online de cada jogador" required/>   
<input type="number" name="idjogador4" placeholder="ID JOGADOR 4 - Verifique atentamente o id online de cada jogador" required/>   
<input type="number" name="idjogador5" placeholder="ID JOGADOR 5 - Verifique atentamente o id online de cada jogador" required/>   
<input type="number" name="idjogador6" placeholder="ID JOGADOR 6 - Verifique atentamente o id online de cada jogador" required/>   
<input type="number" name="idjogador7" placeholder="ID JOGADOR 7 - Verifique atentamente o id online de cada jogador" required/> 



<div class="pagamento-confirmacao">
<label> 
<Br>
<div class="alert alert-warning">
  <strong>Atenção:</strong>  Só preencha os campos <font color="red">ID JOGADOR8, ID JOGADOR9, ID JOGADOR10, </font> se o tipo de inscrição for Prêmio
</div>

 </label>

<input type="number" name="idjogador8" placeholder="ID JOGADOR 8 - SÓ PREENCHA ESTE CAMPO SE O TIPO DE INSCRIÇÃO FOR PRÊMIO"/>   
<input type="number" name="idjogador9" placeholder="ID JOGADOR 9 - SÓ PREENCHA ESTE CAMPO SE O TIPO DE INSCRIÇÃO FOR PRÊMIO"/>   
<input type="number" name="idjogador10" placeholder="ID JOGADOR 10 - SÓ PREENCHA ESTE CAMPO SE O TIPO DE INSCRIÇÃO FOR PRÊMIO"/>   
</div>

<div class="pagamento-confirmacao"> 
<br>
<label> Mandar uma Mensagem ao ADMINISTRADOR </label>

<textarea name="observacao"></textarea>

</div>

<input class="outro" type="submit" value="Confirmar Inscrição">
<input class="outro br" type="reset" value="Limpar Formulario">
</form>

Code sends.php

$date = date("d/m/Y h:i");
$ip = getenv("REMOTE_ADDR");
$navegador = $_SERVER['HTTP_USER_AGENT']; 
$numerocompra = $_POST["numerocompra"]; 
$nomecomprador = $_POST["nomecomprador"]; 
$telefonecomprador = $_POST["telefonecomprador"];
$comprovantepagamento = $_POST["comprovantepagamento"];
$tipodeinscricao = $_POST["tipodeinscricao"];
$qualplataforma = $_POST["qualplataforma"];
$confirmarplataforma = $_POST["confirmarplataforma"];
$nomeequipe = $_POST["nomeequipe"];
$emailequipe = $_POST["emailequipe"];
$logoequipe = $_POST["logoequipe"];
$idlider = $_POST["idlider"];
$idjogador2 = $_POST["idjogador2"];
$idjogador3 = $_POST["idjogador3"];
$idjogador4 = $_POST["idjogador4"];
$idjogador5 = $_POST["idjogador5"];
$idjogador6 = $_POST["idjogador6"];
$idjogador7 = $_POST["idjogador7"];
$idjogador8 = $_POST["idjogador8"];
$idjogador9 = $_POST["idjogador9"];
$idjogador10 = $_POST["idjogador10"];
$observacao = $_POST["observacao"]; 
$email = '[email protected]'; 





                $MailRecipiente = $email;     
                $MailAssunto    = "Confirmação de Pagamento e Inscrição - Mercado Livre"; 
                $headers = "MIME-Version: 1.0\r\n"; 
                $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
                $headers .= "From: $email\r\n"; 
                $headers .= "Return-Path: $email\r\n"; 

                 $msg = ' 
                         <b>Número da Compra:</b> '.$numerocompra.'<br/> 
                         <b>Nome do Comprador:</b> '.$nomecomprador.'<br/> 
                                     <b>Telefone do Comprador:</b> '.$telefonecomprador.'<br/> 
                                     <b>Comprovante de Pagamento:</b> '.$comprovantepagamento.'<br/> 
                         <b>Tipo de Inscrição:</b> '.$tipodeinscricao.'<br/> 
                         <b>Plataforma:</b> '.$qualplataforma.'<br/> 
                         <b>Confirmação de Plataforma:</b> '.$confirmarplataforma.'<br/> 
                         <b>Nome da Equipe:</b> '.$nomeequipe.'<br/> 
                         <b>Logo da Equipe:</b> '.$logoequipe.'<br/> 
                         <b>ID do Lider:</b> '.$idlider.'<br/> 
                         <b>ID Jogador 2:</b> '.$idjogador2.'<br/> 
                         <b>ID Jogador 3:</b> '.$idjogador3.'<br/> 
                         <b>ID Jogador 4:</b> '.$idjogador4.'<br/> 
                         <b>ID Jogador 5:</b> '.$idjogador5.'<br/> 
                         <b>ID Jogador 6:</b> '.$idjogador6.'<br/> 
                         <b>ID Jogador 7:</b> '.$idjogador7.'<br/> 
                         <b>ID Jogador 8:</b> '.$idjogador8.'<br/> 
                         <b>ID Jogador 9:</b> '.$idjogador9.'<br/> 
                         <b>ID Jogador 10:</b> '.$idjogador10.'<br/> 
                         '; 

                  mail($MailRecipiente,$MailAssunto,$msg,$headers);


                  // AQUI SE COLOCA A COPIA CASO QUEIRA QUE O FORMULARIO ENVIE (DUPLIQUE QUANTAS VEZES QUISER)

                  mail('[email protected]','[email protected]',$MailAssunto,$msg,$headers);


//AUTO RESPOSTA 
                $headers_ = "MIME-Version: 1.0\r\n"; 
                $headers_ .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
                $headers_ .= "From:  $email\r\n"; 
                $site = "www.canaljoga10.com.br"; 
                $titulo = "Resposta Automatica - Canaljoga10"; 
                $mensagem = "Sua confirmação de inscrição está em analise."; 

                mail($emailequipe,$titulo,$mensagem,$headers_); 

echo "<script>location.href='sucesso.php'</script>"; // Página que será redirecionada

What is the function that I can use, for when he sends the payment image, it comes as an attachment in my email, and not as 19283912sqodis.png "as text" ?

  • José Júnior, I edited the answer in order to use Phpmailer that is easier.

1 answer

2


Considering using Phpmailer as I wish in the comments:

Download the files PHPMailerAutoload.php - class.smtp.php - class.phpmailer.php in github

Create a folder PHPMailer-master in the same directory as your PHP application and publish the downloaded files in this folder (Phpmailer-master).

The enctype attribute is used exclusively for the user to send a file from their local computer (or network) to the server.

The only change in your form is in the form tag which should be as follows:

<form name="enviarMensagemForm" action="envia-mercadolivre.php" method="post" enctype="multipart/form-data">

PHP

if (isset($_POST["numerocompra"])) {

$date = date("d/m/Y h:i");
$ip = getenv("REMOTE_ADDR");
$navegador = $_SERVER['HTTP_USER_AGENT']; 
$numerocompra = $_POST["numerocompra"]; 
$nomecomprador = $_POST["nomecomprador"]; 
$telefonecomprador = $_POST["telefonecomprador"];
$comprovantepagamento = $_POST["comprovantepagamento"];
$tipodeinscricao = $_POST["tipodeinscricao"];
$qualplataforma = $_POST["qualplataforma"];
$confirmarplataforma = $_POST["confirmarplataforma"];
$nomeequipe = $_POST["nomeequipe"];
$emailequipe = $_POST["emailequipe"];
$logoequipe = $_POST["logoequipe"];
$idlider = $_POST["idlider"];
$idjogador2 = $_POST["idjogador2"];
$idjogador3 = $_POST["idjogador3"];
$idjogador4 = $_POST["idjogador4"];
$idjogador5 = $_POST["idjogador5"];
$idjogador6 = $_POST["idjogador6"];
$idjogador7 = $_POST["idjogador7"];
$idjogador8 = $_POST["idjogador8"];
$idjogador9 = $_POST["idjogador9"];
$idjogador10 = $_POST["idjogador10"];
$observacao = $_POST["observacao"]; 
$email = '[email protected]'; 

$arquivo = $_FILES["comprovantepagamento"];

$logo = $_FILES["logoequipe"];

$MailRecipiente = $email; 

$MailAssunto    = "Confirmação de Pagamento e Inscrição - Mercado Livre"; 



$msg = ' 
    <b>Número da Compra:</b> '.$numerocompra.'<br/> 
    <b>Nome do Comprador:</b> '.$nomecomprador.'<br/> 
    <b>Telefone do Comprador:</b> '.$telefonecomprador.'<br/> 
    <b>Comprovante de Pagamento:</b> '.$comprovantepagamento.'<br/> 
    <b>Tipo de Inscrição:</b> '.$tipodeinscricao.'<br/> 
    <b>Plataforma:</b> '.$qualplataforma.'<br/> 
    <b>Confirmação de Plataforma:</b> '.$confirmarplataforma.'<br/> 
    <b>Nome da Equipe:</b> '.$nomeequipe.'<br/> 
    <b>Logo da Equipe:</b> '.$logoequipe.'<br/> 
    <b>ID do Lider:</b> '.$idlider.'<br/> 
    <b>ID Jogador 2:</b> '.$idjogador2.'<br/> 
    <b>ID Jogador 3:</b> '.$idjogador3.'<br/> 
    <b>ID Jogador 4:</b> '.$idjogador4.'<br/> 
    <b>ID Jogador 5:</b> '.$idjogador5.'<br/> 
    <b>ID Jogador 6:</b> '.$idjogador6.'<br/> 
    <b>ID Jogador 7:</b> '.$idjogador7.'<br/> 
    <b>ID Jogador 8:</b> '.$idjogador8.'<br/> 
    <b>ID Jogador 9:</b> '.$idjogador9.'<br/> 
    <b>ID Jogador 10:</b> '.$idjogador10.'<br/> 
    '; 

    require_once('PHPMailer-master/PHPMailerAutoload.php');

    $mail = new PHPMailer();

    $mail->IsSMTP(); // Define que a mensagem será SMTP
    $mail->Host = "smtp.dominio.com"; // Endereço do servidor SMTP ou
    //$mail->Host = "mail.dominio.com"; // Endereço do servidor SMTP ou
    //$mail->Host = "localhost";
    $mail->SMTPAuth = true; // Autenticação
    $mail->Username = '[email protected]'; // Usuário do servidor SMTP
    $mail->Password = 'SENHA'; // Senha da caixa postal utilizada

    // Define o remetente
    $mail->From = $email; 
    $mail->FromName = 'Nome remetente';

    // Define os destinatário(s)                            
    $mail->AddAddress($email, 'Nome do Destinatário');
    //$mail->AddAddress('[email protected]', 'Nome do Destinatário');
    //$mail->AddCC('[email protected]', 'Nome do Destinatário'); // Copia
    //$mail->AddBCC('[email protected]', 'Nome do Destinatário'); // Cópia Oculta

    $mail->IsHTML(true); // Define que o e-mail será enviado como HTML
    $mail->CharSet = 'iso-8859-1'; // Charset da mensagem (opcional)

    $mail->Subject  = $MailAssunto; // Assunto da mensagem

    $mail->Body = $msg;

    // Anexo                        
    $mail->AddAttachment($arquivo['tmp_name'], $arquivo['name']  );
    $mail->AddAttachment($logo['tmp_name'], $logo['name']  );

    $enviado = $mail->Send();   

    $mail->ClearAllRecipients();
    $mail->ClearAttachments();



  //AUTO RESPOSTA 
     $headers_ = "MIME-Version: 1.0\r\n"; 
     $headers_ .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
     $headers_ .= "From:  $email\r\n"; 
     $site = "www.canaljoga10.com.br"; 
     $titulo = "Resposta Automatica - Canaljoga10"; 
     $mensagem = "Sua confirmação de inscrição está em analise."; 

     mail($emailequipe,$titulo,$mensagem,$headers_);        



    if ($enviado) {
        echo "<script>location.href='sucesso.php'</script>"; // Página que será redirecionada   
    } else {
        $mensagem = "Não foi possível enviar o e-mail. Informações do erro: 
        " . $mail->ErrorInfo;
    }


}

This condition you can change the way you think best for your application if (isset($_POST["numerocompra"])) {

NOTE: in the action of your form has envia-mercadolivre.php but the name of your php file is as envia.php. I believe it was a misunderstanding on your part.

  • I tested on a server, however, is now not sending, the page is not even loading

  • ( ! ) Fatal error: Call to a Member Function Addattachment() on null in C: wamp64 www canaljoga10 envia-mercadolivre.php on line 28

  • and what is this line 28?

  • $email = '[email protected]'; $file = $_FILES["proof of payment"]; $mail->Addattachment($file['tmp_name'], $file['name']); $sent = $mail->Send(); this is line 26, 27, 28 and 29

  • AddAttachment is a method of the Phpmailer class, but since you are not using it, you need to insert the file through same headers. You can read a little about here, but using Phpmailer is actually easier in this case. If possible, I recommend studying the possibility.

  • I understand, but in this case mine which option I use ?

Show 1 more comment

Browser other questions tagged

You are not signed in. Login or sign up in order to post.