Ir ao conteúdo
  • Cadastre-se

PHP PHPMailer - Envio de Formulário Contato através do site


Posts recomendados

Boa tarde prezados, estou tentando configurar o PHPMailer para envio do Formulário Contato através do Site, porém estão retornando os seguintes erros:

 

Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/storage/8/5e/d8/iprog1/public_html/enviaFormulario.php on line 2

Deprecated: Directive 'track_errors' is deprecated in Unknown on line 0

 

*Seguem os códigos:

 

####################

formulário.php

####################

<!DOCTYPE html>

<html lang="pt-br">
   <head>   
      <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″/>         
      <title>formulario</title>       
      <link rel="stylesheet" type="text/css" href="_css/estilo.css"/>      
      <link rel="stylesheet" type="text/css" href="_css/form.css"/>           
   </head>   
   <body>          
      <div id="corpo">      
      <h1 style="border-bottom:2px solid #3EC0F1;padding-bottom:10px">CONTATO</h1>          
         <form method="post" action="enviaFormulario.php" id="contato">     
            <fieldset id="fContato"><legend><h3>CONTATO</h3></legend>
               <p><label for="cEmpresa">Empresa </label>&nbsp
               <input type="text" name="empresa" id="cEmpresa" size="70" maxlength="70" placeholder="Razão Social"/></p>
               <p><label for="cNome">Nome* </label>&nbsp&nbsp&nbsp&nbsp
               <input type="text" name="nome" id="cNome" size="70" maxlength="70" placeholder="Nome completo" required /></p>
               <p><label for="cTelefone">Telefone </label>&nbsp
               <input type="text" name="telefone" id="cTelefone" size="10" maxlength="10" placeholder="DDD+Telefone"/></p>
               <p><label for="cCelular">Celular* </label>&nbsp&nbsp
               <input type="text" name="celular" id="cCelular" size="11" maxlength="11" placeholder="DDD+Celular" required /></p>
               <p><label for="cEmail">E-mail* </label>&nbsp&nbsp&nbsp
               <input type="email" name="email" id="cEmail" size="70" maxlength="70" placeholder="E-mail" required /></p>
            </fieldset>            
            <fieldset id="fMensagem"><legend><h3>MENSAGEM</h3/></legend>
               <p><label for="cAssunto">Assunto* </label>&nbsp                  
                    <select name="assunto" id="cAssunto">
                     <optgroup label="Assunto" required >                        
                        <option value="orcamento">Orçamento</option>
                        <option value="duvida">Dúvida</option>
                        <option value="sugestao">Sugestão</option>
                     </optgroup>
                  </select>
               </p>               
               <p><label for="cMensagem">Mensagem* </label><br/>
               <textarea name="mensagem" id="cMensagem" cols="82" rows="10" maxlength="820" placeholder="Digite aqui a sua mensagem" required ></textarea></p>                
            </fieldset>            
            <input type="reset" value="Limpar" name="botaoLimpar" id="botao"/>            
            <input type="submit" value="Enviar" name="botaoEnviar" id="botao" style="position:relative;left:220px;margin-top:20px"/>             
         </form>          
      </div>         
   </body>    
</html>

 

####################

enviaFormulario.php

####################

<?php

use PHPMailer\src\PHPMailer.php;
use PHPMailer\src\POP3.php;
use PHPMailer\src\OAuth.php;
use PHPMailer\src\Exception.php;
use PHPMailer\src\SMTP.php;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    
    $mail->isSMTP();                                            
    $mail->Host       = 'smtp.seudominio.com.br';                    //inserir host             
    $mail->SMTPAuth   = true;                                   
    $mail->Username   = '[email protected]';                //inserir e-mail                  
    $mail->Password   = 'suasenha123';                               //inserir senha           
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         
    $mail->Port       = 587;                                   

    $mail->setFrom('[email protected]', 'Mailer');          //inserir e-mail
    $mail->addAddress('[email protected]', 'User');         //inserir e-mail
    $mail->addReplyTo('[email protected]', 'Information');  //inserir e-mail   
    //$mail->addCC('[email protected]');
    //$mail->addBCC('[email protected]');
    
    $mail->addAttachment('/var/tmp/file.tar.gz');         
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    
    $mail->addAttachment('/tmp/image.pdf', 'new.pdf');    
    
    $assunto = $_POST["assunto"];
    
    $mail->isHTML(true);                       
    $mail->Subject = '$assunto';               
    $mail->Body   .= "Nome "    .$_POST['nome']."
    ";
    $mail->Body   .= "Telefone ".$_POST['telefone']."
    ";
    $mail->Body   .= "Celular " .$_POST['celular']."
    ";
    $mail->Body   .= "E-mail "  .$_POST['email']."
    ";
    $mail->Body   .= "Assunto " .$_POST['assunto']."
    ";
    $mail->Body   .= "Mensagem ".$_POST['mensagem']."
    ";    

    $mail->send();
       echo 'Mensagem enviada com sucesso!';
}   catch (Exception $e) {
       echo "Mensagem não enviada. Erro de envio: {$mail->ErrorInfo}";
       }

?>

 

Desde já agradeço a atenção e espero que possamos resolver este erro e ajudar outras pessoas com o mesmo problema.

 

Abraço.

Link para o comentário
Compartilhar em outros sites

@Fábio Marson 

 

Bom você está tentando declarar que vai usar uma class e você passa a extensão na classs?

 

Agora Sim.

 

PHPMailer

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\POP3;
use PHPMailer\PHPMailer\OAuth;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

 

Aqui tem o link pra documentação do php using namespace, pra você endenter melhor o que está acontecendo!

 

Link para o comentário
Compartilhar em outros sites

Boa tarde Gabriel, como vai?

Obrigado pelas informações, consultei a documentação do php na qual indicou e encontrei a estrutura abaixo, porém não consegui integrá-la ao código para funcionar.

 

<?php

// Pre PHP 7 code
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;

use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;

use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;

 

Estou com outra dúvida também, conforme algumas pesquisas que eu fiz, entendi que para autenticar a transmissão do e-mail via SMTP é necessário baixar o pacote do PHPMailer e também é necessário o diretório vendor/autoload.php, visto isso, baixei o PHPMailer, instalei o composer e efetuei a instalação dos documentos do laravel através do cmd criando um diretório onde estão o PHPMailer, todos os diretórios e arquivos do laravel incluindo vendor/autoload.php e os arquivos do Formulário de Contato: formulario.php e enviaFormulario.php. Não encontrei tutoriais que esclarecessem esta questão, está correto colocar todos esses diretórios e arquivos em um único diretório?

 

Me desculpe se as minhas dúvidas são óbvias ou estão mal formuladas, mas sou iniciante em php e gostaria de criar o formulário SMTP para que as mensagens não caiam no spam, agradeço muito se puder me auxilar, e também ainda não entendi muito bem como funciona o composer / laravel e se realmente preciso usá-los para funcionar esse código.

 

Abraço.

Link para o comentário
Compartilhar em outros sites

@Fábio Marson Bom se você está usando a framework laravel, você não vai presisar instalar nenhuma outra dependencia para configurar um envio de e-mail, pos o proprio laravel vem com uma dependencia e configuraçôes pra isso.

 

Aqui está a documentação do larvel explicando como configurar um e-mail pra uso dentro dele.

https://laravel.com/docs/7.x/mail

Link para o comentário
Compartilhar em outros sites

Boa tarde Gabriel, mais uma vez obrigado pela atenção, existe alguma maneira mais simples para o envio do Formulário Contato com o protocolo SMTP, utilizando somente o PHPMailer?

 

Tenho dúvidas referente à integração entre os arquivos HTML (formulario.html), PHP(enviaFormulario.php), JS ( As funções devem ficar dentro do arquivo "formulario.html" ou dentro do arquivo "enviaFormulario.php" ? ) e o diretório PHPMailer-master (Já contendo o arquivo: PHPMailerAutoload.php) (github) para funcionar o envio do Formulário de Contato, como devo publicar no "public_html" ? 

 

Segue a estrutura abaixo:

 

HTML + JS - contato.html

<!DOCTYPE html>

<html lang="pt-br">

   <head>
      <meta charset="utf-8"/> 
      <title>Contato</title>   
      <link rel="stylesheet" type="text/css" href="_css/estilo.css"/>            
   </head>  
   
   <script>
   $("#contact-form").submit(function(e) {
    $(".alert-success").hide(), $(".alert-danger").hide(), e.preventDefault(), $.ajax({
        type: "POST",
        url: "/resources/controllers/email/send.php",
        cache: !1,
        async: !0,
        data: $(this).serialize(),
        dataType: "json",
        success: function(e) {
            1 == e ? ($(".alert-success").show(), $("#contact-form")[0].reset()) : $(".alert-danger").show()
        }
    })
});
   </script>
   
  <body>   
    
        <form class="contact-field" method="POST" action="enviaContato.php" id="contact-form">           
         
            <p style="text-transform:none;">Entre em contato, retornaremos em breve!</p>
            
                <div class="col-md-12 col-sm-12 col-xs-12" style="padding-left:0">
                    <div class="single-input-field">
                    <input name="name" id="name" class="name" placeholder="Nome" type="text" required=""> </div>
                </div>
            
                <div class="col-md-6 col-sm-6 col-xs-12">
                    <div class="single-input-field">
                    <input name="phone" id="phone" class="phone" placeholder="Telefone" type="text" required=""> </div>
                </div>
            
                <div class="col-md-6 col-sm-6 col-xs-12">
                    <div class="single-input-field">
                    <input name="email" id="email" class="email" placeholder="E-mail" type="email" required=""> </div>
                </div>
            
                <div class="col-md-12 message-input">
                    <div class="single-input-field">
                    <textarea name="message" id="message" class="message" placeholder="Mensagem" required=""></textarea>
                    </div>
                </div>
            
                <div style="display:inline-block">
                    <div class="alert alert-success" style="display:none;" role="alert">Contato enviado com sucesso!</div>
                    <div class="alert alert-danger" style="display:none;" role="alert">Erro! Tente novamente.</div>
                </div>
                
                    <div class="single-input-fieldsbtn">
                    <input value="Enviar" type="submit"> </div>
        
        </form>      
           
   </body> 
   
</html>

 

PHP - enviaContato.php

<?php   
 
include "PHPMailer-master/PHPMailerAutoload.php"; 
 
$mail = new PHPMailer(); 
 
$mail->IsSMTP(); 
 
$mail->Host = "mail.seudominio.com.br"; //inserir seu domínio 
 
$mail->Port = 25;  
 
$mail->SMTPAuth = true; 
 
$mail->Username = '[email protected]'; //inserir e-mail 
$mail->Password = '********'; //inserir senha do e-mail 
 
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); 
 
// $mail->SMTPDebug = 2; 

$mail->From = "[email protected]"; 
 
$mail->FromName = "Seu nome"; //inserir o seu nome
 
$mail->AddAddress('[email protected]', 'Nome'); //destinatário, inserir e-mail e nome 
 
//$mail->AddAddress('[email protected]'); 
 
// $mail->AddCC('[email protected]', 'Joana'); 
// $mail->AddBCC('[email protected]', 'Roberto'); 
 
$mail->IsHTML(true); 
 
$mail->CharSet = 'UTF-8'; 
 
$mail->Subject = "Contato - Assunto da mensagem"; 
 
//$mail->Body = 'Aqui entra o conteudo texto do email'; 
    $mail->Body   .= "Nome: "    .$_POST['name']."
    ";
    $mail->Body   .= "Telefone: ".$_POST['phone']."
    ";
    $mail->Body   .= "E-mail: "  .$_POST['email']."
    ";
    $mail->Body   .= "Mensagem: ".$_POST['menssage']."
    ";

// $mail->AddAttachment("/home/usuario/public_html/documento.pdf", "documento.pdf"); 
 
$enviado = $mail->Send(); 
 
if ($enviado) 
{ 
    echo "Seu email foi enviado com sucesso!"; 
} else { 
    echo "Houve um erro enviando o email: ".$mail->ErrorInfo; 
} 
  
?>

 

 

PHPMailer-master (Diretório)

 

 

Não consegui enviar o Formulário de Contato, poderia por gentileza verificar se os códigos estão corretos ou se é a forma como estou integrando os arquivos ou publicando no "public_html".

 

Desde já agradeço pela ajuda.

 

Abraço.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!