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();

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software