Fatal error - PHP


(Tiago Battoni) #1

Olá,

Estou usando um script php pronto para envio de formulário de contato.
Estou tendo o seguinte erro: Fatal error: Class 'Mail' not found in /home1/grillbra/public_html/battoni/php/send-form.php on line 200

A linha 200 é essa: $mail_object =& Mail::factory('smtp', $params);

Alguém já viu isso, tem alguma ideia de como resolver?
Não sou programador php, espero poder contar com a ajuda de vocês.

Abraço,

Tiago


(Luan Maik) #2

A classe Mail não foi encontrada em 'caminho_do_arquivo', ou seja, vc errou no require, include ou nem isso fez.
Veja se vc fez a importação utilizando:
require 'caminho_da_classe/Mail.php';


(Tiago Battoni) #3

Oi @LuanMaik ,

Obrigado por responder.
Então, eu tinha usado include e depois mudei para teste com require_once.
Estou até usando um caminho absoluto veja:
require_once("http://meusite/php/Mail-1.2.0/Mail-1.2.0/Mail.php");
require_once("http://meusite/php/Mail_Mime-1.8.9/Mail/mime.php");

Mas ele insiste em dizer que não consegue encontar, essa classe está dentro do arquivo Mail.php.

Tenho uma pasta php, dentro dela estão as pastas Mail-1.2.0 e Mail_Mime-1.8.9, também o arquivo send-form-php.

Tem alguma outra ideia?

Grato,

Tiago


(Luan Maik) #4

Não pode fazer um require, include informando o host, por mais que seja o seu host, vc precisa buscar no seu servidor.
Imagina se eu faço um require na sua classe que conecta no banco de dados e uso ela??

Correto:
require_once "minhaPasta/Mail.php"

Errado:
require_once "http://algumSite.com/minhaPasta/Mail.php"


(Luan Maik) #5

Analisando a estrutura das suas pastas, o correto seria:

require_once "Mail-1.2.0/Mail-1.2.0/Mail.php";

require_once "Mail_Mime-1.8.9/Mail/mime.php";


(Tiago Battoni) #6

Oi @LuanMaik,

Obrigado pelas dicas.

Eu fiz as alterações que você sugeriu, mas aí ocorrem os seguintes erros:

Strict Standards: Non-static method Mail::factory() should not be called statically in /home1/grillbra/public_html/battoni/php/send-form.php on line 200

Warning: include_once(Net/SMTP.php): failed to open stream: No such file or directory in /home1/grillbra/public_html/battoni/php/Mail-1.2.0/Mail-1.2.0/Mail/smtp.php on line 348

Warning: include_once(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/opt/php56/lib/php') in /home1/grillbra/public_html/battoni/php/Mail-1.2.0/Mail-1.2.0/Mail/smtp.php on line 348

Fatal error: Class 'Net_SMTP' not found in /home1/grillbra/public_html/battoni/php/Mail-1.2.0/Mail-1.2.0/Mail/smtp.php on line 349

Alguma sugestão?


(Luan Maik) #7

O erro informa que vc está utilizando métodos que não existem na classe Mail.
De onde vc tirou esta classe? Tem documentação de como utiliza-la?


(Tiago Battoni) #8

Olá @LuanMaik,

Eu usei esse código pronto para o formulário, faça o download.
Ele está usando a biblioteca Pear, no entanto houve algum tipo de atualização ou alteração nessa biblioteca. Eu baixei a mesma versão que está em include do arquivo original e também a baixei a versão mais recente e ocorrem os mesmos erros.


Dificuldades com formulário de contato - PHPmailer
(Luan Maik) #9

Utilize a biblioteca:

Com ela vc terá mais suporte.


(Tiago Battoni) #10

Obrigado pela sugestão.
Como são não sou programador php, como eu faço para usar?
No arquivo que passei o link ele estava pronto e era só alterar alguns itens para usar.
Você tem ou sabe de algum arquivo assim que eu possa usar baseado nessa biblioteca?

Grato


(Tiago Battoni) #11

Usei um arquivo que o PHPMailer, mas tb está dando erro, informa que o corpo da mensagem está vazio. Qual seria o erro?

require 'PHPMailer/PHPMailerAutoload.php';

$Mailer = new PHPMailer();

//Define que será usado SMTP
$Mailer->IsSMTP();

//Enviar e-mail em HTML
$Mailer->isHTML(true);

//Aceitar carasteres especiais
$Mailer->Charset = 'UTF-8';

//Configurações
$Mailer->SMTPAuth = true;
$Mailer->SMTPSecure = 'ssl';

//nome do servidor
$Mailer->Host = 'meusite.com';
//Porta de saida de e-mail 
$Mailer->Port = 465;

//Dados do e-mail de saida - autenticação
$Mailer->Username = 'email@meusite.com';
$Mailer->Password = '****';


$body ="
Name: $name 

Email: $email 

Subject: $subject

Message: $message

"
;
//E-mail remetente (deve ser o mesmo de quem fez a autenticação)
$Mailer->From = $email;

//Nome do Remetente
$Mailer->FromName = $name;

//Assunto da mensagem
$Mailer->Subject = $subject;

//Corpo da Mensagem
$Mailer->Body = $message;

//Corpo da mensagem em texto
$Mailer->AltBody = $message;

//Destinatario 
$Mailer->AddAddress('email@meusite.com');

if($Mailer->Send()){
	echo "<p>Message sent successfully!<br/>Soon we will contact you!<br/>Grill Brazil appreciates your visit!</p>";
	echo "<p><a href='meusite.com'>Go to Home.</a></p>";
}else{
	echo "<p>Error trying to send message: </p>" . $Mailer->ErrorInfo;
	echo "<p><a href='meusite.com'>Go to the Contact page.</a></p>";
}

(Tiago Battoni) #12

Olá,

Estou encerrando esse tópico, devido ao fato de não ter soluções referente aos códigos em testei.
Estarei abrindo um novo tópico referente a um outro código para formulário de contato.
Faço um agradecimento especial ao @LuanMaik.
Agradeço a ajuda.

Tiago