Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tentando utilizar o PHPMAILER, mas recebo o seguinte erro:
Fatal error: Class 'SMTP' not found in /home/u579407707/public_html/phpmailer/class.phpmailer.php on line 1291
Segue a linha 1291:
$this->smtp = new SMTP;
Abaixo o código do formulário:
>
<form action="envia.php" method="post" id="contato">
<input name="nomeRemetente" placeholder="SEU NOME:" maxlength="50" id="nome" type="text" class="input-texto" required>
<input name="email" placeholder="SEU E-MAIL:" maxlength="50" id="email" type="text" class="input-texto" required>
<input name="assunto" placeholder="ASSUNTO:" maxlength="150" id="assunto" type="text" class="input-texto" required>
<textarea placeholder="Digite aqui sua mensagem!" name="mensagem" id="mensagem" class="form-textarea" required></textarea>
<input class="enviar-msg" type="submit" value="Enviar mensagem" name="enviar">
</form>
Código envia.php
>
<?php
/*apenas dispara o envio da mensagem caso houver/existir $_POST['enviar']*/
if (isset($_POST['enviar'])) $destinatarios = 'gasparsvl@gmail.com';
$nomeDestinatario = 'Nome do destinatário';
$usuario = 'gasparsvl@gmail.com';
$senha = 'SENHA';
/abaixo as veriaveis principais, que devem conter em seu formulario/
$nomeRemetente = $_POST['nomeRemetente'];
$assunto = $_POST['assunto'];
$_POST['mensagem'] = nl2br('E-mail: '. $_POST['email'] ."
". $_POST['mensagem']);
/********************************* A PARTIR DAQUI NAO ALTERAR **********************************/
include_once("phpmailer/class.phpmailer.php");
$To = $destinatarios;
$Subject = $assunto;
$Message = $_POST['mensagem'];
$Host = 'smtp.'.substr(strstr($usuario, '@'), 1);
$Username = $usuario;
$Password = $senha;
$Port = "587";
$mail = new PHPMailer();
$body = $Message;
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = $Host; // SMTP server
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = $Port; // set the SMTP port for the service server
$mail->Username = $Username; // account username
$mail->Password = $Password; // account password
$mail->SetFrom($usuario, $nomeDestinatario);
$mail->Subject = $Subject;
$mail->MsgHTML($body);
$mail->AddAddress($To, "");
if(!$mail->Send()) {
$mensagemRetorno = 'Erro ao enviar e-mail: '. print($mail->ErrorInfo);
} else {
$mensagemRetorno = 'E-mail enviado com sucesso!';
}
}
?>>
Seus arquivos para o envio estão incompletos. Baixe a nova versão da class phpmailer e chame somente o arquivo
PHPMailerAutoload.php
Adicionei a linha á meu codigo. Porém, o erro agora exibido é o seguinte:
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Conforme o log, o problema agora é a sua conexão com o SMTP. Cheque os dados e se o smtp está ativo. Veja qual protocolo de segurança ele realmente utiliza, etc.
Eu alterei meu código de envia.php
segue o novo:
>
<?php
require_once('phpmailer/PHPMailerAutoload.php');
// Inicia a classe PHPMailer
$mail = new PHPMailer();
// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "mx1.hostinger.com.br"; // Endereço do servidor SMTP
$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
$mail->Username = 'email; // Usuário do servidor SMTP
$mail->Password = 'SENHA'; // Senha do servidor SMTP
// Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->From = "tuc@tucobracoral.96.lt"; // Seu e-mail
$mail->FromName = "Thiago Barros"; // Seu nome
// Define os destinatário(s)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->AddAddress('fulano@dominio.com.br', 'Fulano da Silva');
$mail->AddAddress('ciclano@site.net');$mail->Body = "Este é o corpo da mensagem de teste, em <b>HTML</b>! :)";
$mail->AltBody = "Este é o corpo da mensagem de teste, em Texto Plano! \r\n :)";$mail->ClearAllRecipients();
$mail->ClearAttachments();if ($enviado) {
echo "E-mail enviado com sucesso!"; echo "Não foi possível enviar o e-mail.";
echo "<b>Informações do erro:</b> " . $mail->ErrorInfo;
}
Porém, quando clico em enviar, a página fica carregando por volta de um minuto e em seguida o erro:
>
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at admin@main-hosting.eu to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
Seu problema está no servidor e não no script amigo.
Seus arquivos para o envio estão incompletos. Baixe a nova versão da class phpmailer e chame somente o arquivo
PHPMailerAutoload.php