Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

21
respostas

estou tendo erro arquivos git hub diferentes

Fatal error: Uncaught Error: Class 'PHPMailer' not found in C:\xampp\htdocs\loja\envia-contato.php:9 Stack trace: #0 {main} thrown in C:\xampp\htdocs\loja\envia-contato.php on line 9

bem estou tendo essa msg de erro ao clicr em enviar msg, os arquviso github estao diferentes do da aula, nao existe ou foi renomeado o arquivo aut, deveria ter sido melhor explicado como proceder quando trocassem o arquivo, dei uma olhada nos arquivos baixados, tentei 3 mas continua o erro.

21 respostas

Oi Rubens, tudo bom?

Rolou uma migração no processo de carregamento do phpmailer. Aqui tem um tópico que eu explico certinho, com o link de download correto.

Qualquer problema é só falar.

Abraço.

Ok andre fiz o download dos arquivos q vc postou agora está dando um erro diferente

erro ao enviar mensagemSMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Verifica se a porta que você definiu pra smtp no seu script está liberada no seu sistema operacional.

desbloquiei aqui no firewall mas continua com mesmo erro

eu liberei no windows e no roteador mas olhei em um site aqui para ver se as portas estao abertas e diz q ela está inacecivel ou fechada, nao sei como proceder dai em diante.

fui ver se o problema era no windows, upei ne uma hospedagem minha e deu um erro ainda pior 2018-02-15 02:01:32 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP f11sm7826893oic.35 - gsmtp 2018-02-15 02:01:32 CLIENT -> SERVER: EHLO meurecifedefora.com 2018-02-15 02:01:32 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [108.179.192.200]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8 2018-02-15 02:01:32 CLIENT -> SERVER: STARTTLS 2018-02-15 02:01:32 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS 2018-02-15 02:01:32 CLIENT -> SERVER: EHLO meurecifedefora.com 2018-02-15 02:01:32 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [108.179.192.200]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8 2018-02-15 02:01:32 CLIENT -> SERVER: AUTH LOGIN 2018-02-15 02:01:32 SERVER -> CLIENT: 334 VXNlcm5hbWU6 2018-02-15 02:01:32 CLIENT -> SERVER: cG9ydGFscmVjaWZlZGVmb3JhQGdtYWlsLmNvbQ== 2018-02-15 02:01:32 SERVER -> CLIENT: 334 UGFzc3dvcmQ6 2018-02-15 02:01:32 CLIENT -> SERVER: cXFxcXd3d3dxdzEyYXMxMkFBUVE= 2018-02-15 02:01:32 SERVER -> CLIENT: 535-5.7.8 Username and Password not accepted. Learn more at535 5.7.8 https://support.google.com/mail/?p=BadCredentials f11sm7826893oic.35 - gsmtp 2018-02-15 02:01:32 SMTP ERROR: Password command failed: 535-5.7.8 Username and Password not accepted. Learn more at535 5.7.8 https://support.google.com/mail/?p=BadCredentials f11sm7826893oic.35 - gsmtp SMTP Error: Could not authenticate. 2018-02-15 02:01:32 CLIENT -> SERVER: QUIT 2018-02-15 02:01:32 SERVER -> CLIENT: 221 2.0.0 closing connection f11sm7826893oic.35 - gsmtp SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Warning: Cannot modify header information - headers already sent by (output started at /home/porta035/public_html/meurecifedefora.com/loja/class.smtp.php:239) in /home/porta035/public_html/meurecifedefora.com/loja/envia-contato.php on line 35

Compartilha com a gente aqui seu arquivo envia-contato.php. Assim fica mais fácil encontrar possiveis problemas =)

ai o codigo

<?php 
session_start();
$nome= $_POST["nome"];
$email=$_POST["email"];
$mensagem=$_POST["mensagem"];

require_once("PHPMailerAutoload.php");

$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "portalrecifedefora@gmail.com";
$mail->Password = "suasenhaaqui";

$mail->setFrom("rubensddj@gmail.com", "Rubens dario");
$mail->addAddress("portalrecifedefora@gmail.com");
$mail->Subject= "Email de contato da loja";
$mail->msgHTML("<html>De: {$nome}<br/>Email: {$email}<br/>Mensagem: {$mensagem}</html>");
$mail->AltBody = "De: {$nome}\nEmail: {$email}\nMensagem: {$mensagem}";


if($mail->send()) {

    $_SESSION["success"] = " Mensagem enviada com sucesso";
    header("Location: index.php");


}else {

    $_SESSION["danger"] = " erro ao enviar mensagem" . $mail->ErrorInfo;
    header("Location: contato.php");
}
die();

Oi Rubens, testei seu código com meu email e minha senha e rodou tranquilo.

Verifica se seu email e sua senha estão corretos. Pois seu erro indica:

 Username and Password not accepted

cara testei outro email e deu o mesmo erro

ou os arquivos baixados la no link q vc mandou nao estao corretos ou é outro arquivo que consta o erro, testei 3 emails e continua com mesmo errro

tem como vc me enviar o arquivo q está ultilizando compactado em um zip ? toda a loja até a aula final?

Peguei seu script e adicionei no arquivo email.php, a estrutura da pasta está assim:

https://imgur.com/a/MBxOZ

baixei os arquivos do phpmailer daqui:

https://github.com/PHPMailer/PHPMailer/archive/5.2-stable.zip

esse email.php é o mesmo que o arquivo envia-emailphp da aula ?

pode ser que esteja dando erro sql ao conectar pq estava local host, baixei as aulas antigas e mudei tudo, porem agora ta dando erro até na minha db de onde hospedei

http://meurecifedefora.com/loja/produto-lista.php

da uma olhada, pode ser o arquivo conecta que bixou de vez agora tbm, meu deus

a parte do banco de dados nao tem nada a ver com o envia, acabei de criar outro email, coloquei a senha e nao vai, estou upando no hostgator, nao sei se tem q passar algum parametro diferente, mas parece q ninguem consegue resolver, vou ver se posto em algum forum php nao rolou a solução aqui

esse email.php é o mesmo que o arquivo envia-emailphp da aula ?

Sim, exatamente o mesmo arquivo (com os dados que vc compartilhou aqui) só com o nome diferente.

Aqui: https://github.com/alura-cursos/php-mysql-e-fundamentos-da-web-parte-2/archive/master.zip

Você encontra os arquivos do curso no começo e no fim, as vezes é legal para ter uma comparação e encontrar onde está o problema.

Pelo erro retornado no phpmailer o problema é autenticação do email. Verifica se sua conta gmail está habilitada para permitir aplicativos menos seguros, isso também pode impedir a integração.

Abrindo sua aplicação na pagina produto-formulario, você tem um erro de alteração de header. Nesse post rolou um problema bem parecido.

A menssagem de erro de autenticação na sua sessão também não está sendo removida.

Nos arquivos prontos do curso tudo isso já está certinho, só precisa do banco =)

Qualquer problema é só falar.

Olá andre mudeu meus arquivos para os do curso q vc disponibilizou, coloquei meu email e senha no lugar do q tava, agora mudou a mensagem de erro

Erro ao enviar mensagem SMTP connect() failed.

http://meurecifedefora.com/loja/contato.php

habilitei a função no google de permitir desconhecidos, desativei anti virus, foi no topico que vc indicou, vc entrou no site que enviei ? hospedei ali, nao sei se é problema hostgator ou se tem q desbloquear algo la, mas como o erro é smtp tem a ver com o gmail e nao o hostgator certo ?

Oi Rubens, acredito que o problema seja o hostgator.

Na época que o curso foi gravado a funcionalidade de enviar emails era gratuita, hoje na versão gratuita a porta smtp não é liberada =/

Rubens eu estava com problema no envio do e-mail também onde conseguir atraves do codigo abaixo :

//comando para funcionar o envio por e-mail do formulario
$mail->SMTPOptions = array(
'ssl' => array(
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true
));

Dessa forma o meu ficou da seguinte maneira :

<?php

session_start();

$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];

require_once("PHPMailerAutoload.php");

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "emailvalido@gmail.com";
$mail->Password = "digitesuasenha";

$mail->setFrom("emailvalido@gmail.com", "Alura Curso PHP e MySQL");
$mail->addAddress("emailvalido@gmail.com");

$mail->Subject = "Email de contato da loja";
$mail->msgHTML("<html>de: {$nome}<br/>email: {$email}<br/>mensagem: {$mensagem}</html>");
$mail->AltBody = "de: {$nome}\nemail:{$email}\nmensagem: {$mensagem}";

//comando para funcionar o envio por e-mail do formulario
$mail->SMTPOptions = array(
'ssl' => array(
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true
));

if($mail->send()) {
    $_SESSION["success"] = "Mensagem enviada com sucesso";
    header("Location: index.php");
} else {
    $_SESSION["danger"] = "Erro ao enviar mensagem " . $mail->ErrorInfo;
    header("Location: contato.php");
}
die();