Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, estou fazendo um form em PHP com PHPMailer 5.2.26, não estou usando o 6 pois não sei usar Composer.

 

O problema é o seguinte, não vinculei meu form ainda, eu gostaria de testar o meu processaForm.php para ver se realmente está enviando para meu e-mail, mas estou tendo algum problema que não sei o que é:

Detalhe: para testar estou hospedando o arquivo no meu servidor da Hostinger e tentando abrir ele.

 

<?php
 
// Inclui o arquivo class.phpmailer.php localizado na pasta class
require_once("library/PHPMailer/5.2.26/class.phpmailer.php");
 
// Inicia a classe PHPMailer
$mail = new PHPMailer(true);
 
// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
 // HOSTINGER Portas 465 com SSL ou 587 com TLS
try {
     $mail->Host = 'smtp.hostinger.com.br'; // Endereço do servidor SMTP (Autenticação, utilize o host smtp.seudomínio.com.br)
     $mail->SMTPAuth   = true;  // Usar autenticação SMTP (obrigatório para smtp.seudomínio.com.br)
     $mail->Port       = 587; //  Usar 587 porta SMTP
     $mail->Username = '[email protected]'; // Usuário do servidor SMTP (endereço de email)
     $mail->Password = 'xxxxxxxxx'; // Senha do servidor SMTP (senha do email usado)
 
     //Define o remetente
     // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=    
     $mail->SetFrom('[email protected]', 'Nome'); //Seu e-mail
     $mail->AddReplyTo('[email protected]', 'Nome'); //Seu e-mail
     $mail->Subject = 'Contato teste';//Assunto do e-mail
 
 
     //Define os destinatário(s)
     //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     $mail->AddAddress('[email protected]', 'Teste email');
 
     //Campos abaixo são opcionais 
     //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     //$mail->AddCC('[email protected]', 'Destinatario'); // Copia
     //$mail->AddBCC('[email protected]', 'Destinatario2`'); // Cópia Oculta
     //$mail->AddAttachment('images/phpmailer.gif');      // Adicionar um anexo
 
 
     //Define o corpo do email
     $mail->MsgHTML('corpo do email'); 
 
     ////Caso queira colocar o conteudo de um arquivo utilize o método abaixo ao invés da mensagem no corpo do e-mail.
     //$mail->MsgHTML(file_get_contents('arquivo.html'));
 
     $mail->Send();
     echo "Mensagem enviada com sucesso</p>\n";
 
    //caso apresente algum erro é apresentado abaixo com essa exceção.
    }catch (phpmailerException $e) {
      echo $e->errorMessage(); //Mensagem de erro costumizada do PHPMailer
}
?>

 

Quando tento abrir da "Esta página não está funcionando"

Postado

@navegantenarede Primeiramente obrigado por me avisar do log de erros que eu não sabia que tinha isso no PHP, fiz certo aqui e apareceu a mensagem:

 

Fatal error: Class 'SMTP' not found in /home/u626064454/public_html/library/PHPMailer/5.2.26/class.phpmailer.php on line 1522

 

O que eu fiz para solucionar foi substituir:

require_once("library/PHPMailer/5.2.26/class.phpmailer.php");

por

require("library/PHPMailer/5.2.26/class.smtp.php");
require("library/PHPMailer/5.2.26/class.phpmailer.php");

Não sei exatamente se precisava dos 2, do smtp e do phpmailer, mas coloquei os 2 e deu certo.

 

Estou com um problema agora é o seguinte, quando chega o e-mail, ele está com a codificação de acentos errada, então eu coloquei o seguinte:

 

$mail->IsSMTP(); // Define que a mensagem será SMTP

//Envia Email em HTML
$mail->isHTML(true);

//Aceitar caracteres especiais
$mail->Charset = 'UTF-8';

Mesmo assim não adiantou.

adicionado 5 minutos depois

===========================================================

Pelas boas práticas de programação, como devo pegar os campos do meu form?

 

<?php
//EXEMPLO 1
$nome= $_REQUEST['nome'];
$email= $_REQUEST['email'];
$mensagem= $_REQUEST['mensagem'];

$mail->msgHTML("<html>Nome: {$nome}<br/>email: {$email}<br/>mensagem: {$mensagem}</html>");

//EXEMPLO 2
$mail->msgHTML("<html>de: {$_POST["name"]}<br/>email: {$_POST["email"]}</html>");

//EXEMPLO 3
$nome = $_POST['nome'];
$email = $_POST['email'];
$mensagem = $_POST['mensagem'];
$mail->msgHTML("<html>Nome: {$nome}<br/>email: {$email}<br/>mensagem: {$mensagem}</html>");

//EXEMPLO 4
//TEMOS O GET TAMBEM
?>

 

Postado

@fredkissfree sobre os acentos, tenta adicionar a seguinte linha abaixo do configuração de charset:

 

$mail->Encoding = 'base64';

 

Olha também no seu phpinfo da hospedagem qual codificação de charset que está.

 

Acredito que a melhor opção seria o exemplo #3, por usar $_POST, por fazer o que é necessário, ser mais econômico que o $_REQUEST, mais "seguro" que o $_GET e estar legível.

 

Eu não tenho certeza de onde você está exibindo essa msgHTML, mas acho que você não precisa da tag HTML.

Postado

@navegantenarede

$mail->isHTML(true);

precisa?

 

outra coisa qual porta usar?

 // HOSTINGER Portas 465 com SSL ou 587 com TLS

to usando a 587

 

Não funcionou com $mail->Encoding = 'base64';

adicionado 6 minutos depois

No servidor ta escrito:

default_charset       UTF-8       UTF-8

adicionado 20 minutos depois

Problema de acentuação resolvido:

Não precisa do:

$mail->Encoding = 'base64';

Troquei o:

$mail->Charset = 'UTF-8';

por

$mail->CharSet = "utf-8";

 

  • Curtir 1
Postado

Tenho que da require nos 2 mesmo?

require("library/PHPMailer/5.2.26/class.smtp.php");

require("library/PHPMailer/5.2.26/class.phpmailer.php");

adicionado 30 minutos depois

Estou com o seguinte erro:

Se eu deixo com a instrução 

$teste= "blabla";

$mail->MsgHTML("Nome: {$teste}");

Ele funciona, agora se eu deixo:

$aluno_nome =       $_POST['aluno_nome'];

$mail->MsgHTML("Nome: {$aluno_nome}");

Da erro, nem carrega a pagina.

adicionado 37 minutos depois

Será que é o lugar onde estou colocando meu código?

// Inclui o arquivo class.phpmailer.php localizado na pasta class
require("library/PHPMailer/5.2.26/class.smtp.php");
require("library/PHPMailer/5.2.26/class.phpmailer.php");
 
$aluno_nome =       $_POST['aluno_nome'];
 
// Inicia a classe PHPMailer
$mail = new PHPMailer(true);
 
// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP

//Envia Email em HTML
$mail->isHTML(true);

//Aceitar caracteres especiais
$mail->CharSet = "utf-8";

 // HOSTINGER Portas 465 com SSL ou 587 com TLS
try {
     $mail->Host = 'smtp.hostinger.com.br'; // Endereço do servidor SMTP (Autenticação, utilize o host 

 

Postado

Pelo relatorio de erro do PHP da:

 

[02-Oct-2018 18:07:59 UTC] PHP Parse error:  syntax error, unexpected '$mail' (T_VARIABLE) in /home/u626064454/public_html/processaFormRematricula.php on line 10


 e a linha 10 é 

 

$mail = new PHPMailer(true);

Postado

Resolvido:

require("library/PHPMailer/5.2.26/PHPMailerAutoload.php");

$nome= $_POST['aluno_nome'];

$mail->MsgHTML("$nome"); 

São pequenas mudanças como " " e PHPMailerAutoload

adicionado 39 minutos depois

Só não sei como concatenar isto...

     $mail->MsgHTML("$aluno_nome $aluno_sexo $aluno_dataNasci"); 

 

adicionado 56 minutos depois

Estou fazendo desta maneira:

$aluno_nome= $_POST['aluno_nome'];
$aluno_sexo= $_POST['aluno_sexo'];

  $mail->MsgHTML("
        Nome: $aluno_nome</br>
        Sexo: $aluno_sexo</br>
        "); 

E está funcionando, mesmo não sabendo se é o jeito certo...

O problema que não consigo colocar a data de nascimento, ele da erro e não envia.

 

Minha data de nascimento está assim no form:

<input type="text" class="form-control" id="aluno_nascimento" name="aluno_nascimento" required>

<script type="text/javascript">
	$("#aluno_nascimento").mask("00/00/0000")
</script>

Não sei se tem que fazer algo diferente por estar tratando o campo

  • Moderador
Postado

@fredkissfree Basta criar uma variável concatenada...

 


$msg = "Nome:   $aluno_nome <br/>
        Gênero: $aluno_sexo <br/>
        Data de Nascimento: $aluno_dataNasci";

 $mail->MsgHTML($msg); 

Ademais, você pode concatenar com o ponto.

 

exemplo:

 

$bebida = "Café";
$cor    = "preto";


echo $frase = "O " . $bebida . " é " .$cor ." e é saboroso sem açúcar".

//será impresso: O Café é preto e é saboroso sem açúcar.

 

  • Curtir 1
Postado

@DiF Perfeito, usando o 

14 horas atrás, DiF disse:

 



$msg = "Nome:   $aluno_nome <br/>
        Gênero: $aluno_sexo <br/>
        Data de Nascimento: $aluno_dataNasci";

 $mail->MsgHTML($msg); 

 

Funcionou, não sei o proque o data de nascimento não funcionava quando eu jogava direto no 

$mail->MsgHTML($aluno_nascimento);

Mas desta maneira que me passou funcionou, muito obrigado a todos.

adicionado 35 minutos depois

Para colocar os títulos no e-mail que vão chegar do form:

Dados:

Nome: Fulano

Idade: 30

 

Endereço:

Rua hhhhhhh

 

No caso usa-se <b> ou <strong>?

Postado

Este form quando envia a mensagem aparece no browser:

  $mail->Send();
    
     echo "<p>Enviado!</p>";

Gostaria de deixar melhor, colocar uns include 'header.php'; e uns códigos html, tem como?

Mas isso só vai aparecer para o usuário após enviar, não vai para o e-mail.

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!