Error using phpmailer class

Asked

Viewed 1,064 times

5

I am making a contact form using phpmailer class and whenever sending the email this error happens:

I’m using the SMTP connection.

"Fatal error: Class 'SMTP' not found in /home/proftpd/[email protected]/Phpmailer/class.phpmailer.php on line 1466".

Below follows code I’m using:

<?php

// Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer
require("./PHPMailer/class.phpmailer.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 = "localhost"; // Endereço do servidor SMTP (caso queira utilizar a 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->Username = '[email protected]'; // Usuário do servidor SMTP (endereço de email)
$mail->Password = 'siteteste'; // Senha do servidor SMTP (senha do email usado)

// Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->From = "[email protected]"; // Seu e-mail
$mail->Sender = "[email protected]"; // Seu e-mail
$mail->FromName = "Ariel"; // Seu nome

// Define os destinatário(s)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->AddAddress('[email protected]', 'Teste contato');


// Define os dados técnicos da Mensagem
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
//$mail->CharSet = 'iso-8859-1'; // Charset da mensagem (opcional)

// Define a mensagem (Texto e Assunto)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->Subject  = "Mensagem Teste"; // Assunto da mensagem
$mail->Body = 'Este é o corpo da mensagem de teste, em HTML! 
 <IMG src="http://seudomínio.com.br/imagem.jpg" alt=":)"   class="wp-smiley"> ';
$mail->AltBody = 'Este é o corpo da mensagem de teste, em Texto Plano! \r\n 
<IMG src="http://seudomínio.com.br/imagem.jpg" alt=":)"  class="wp-smiley"> ';

// Define os anexos (opcional)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//$mail->AddAttachment("/home/login/documento.pdf", "novo_nome.pdf");  // Insere um anexo

// Envia o e-mail
$enviado = $mail->Send();

// Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
$mail->ClearAttachments();

// Exibe uma mensagem de resultado
if ($enviado) {
echo "E-mail enviado com sucesso!";
} else {
echo "Não foi possível enviar o e-mail.

";
echo "Informações do erro: 
" . $mail->ErrorInfo;
}

?>
  • 2

    a silly question, but, you remembered to copy the class.smtp.php for your phpmailer folder? Classes class.phpmailer.php and class.smtp.php are required to use the function.

2 answers

6


In the package of PHPMailer, there are several classes, among which the: class.smtp.php used in the file class.phpmailer.php.

Since you’re including the file class.phpmailer.php in your script, you also need to include its dependencies:

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

In practice, Phpmailer’s recommendation is to include the autoloader self-loading the necessary classes, where you would do as follows:

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

Including the autoloader, whenever some class is needed and is not loaded, the autoloader carries the same for you, avoiding your problem.

  • It would be good to know what is wrong with the answer to correct the problem!

4

Try this

require_once (dirname(__FILE__) . '/PHPMailer/PHPMailerAutoload.php');

Browser other questions tagged

You are not signed in. Login or sign up in order to post.