Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TNT

[Resolvido] problema phpmailer

Recommended Posts

Olá a todos. Pretendo colocar um formulário de contato em meu site e para isso estou usando a classe phpmailer e o seguinte código:

 

<html>
<head>
<title>Meu formulário!</title>
</head>
<body>


<?php

//error_reporting(E_ALL);
//error_reporting(E_STRICT);

date_default_timezone_set('America/Toronto');

require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$nome=$_POST['nome'];
$email=$_POST['email'];
$assunto=$_POST['assunto'];
$mensagem=$_POST['mensagem'];

$body = "Nome: " . $nome . "<br>Email: " . $email . "<br><br>Mensagem: <br>" . $mensagem;

$mail			 = new PHPMailer();


$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host	   = "smtp.gmail.com"; // SMTP server
$mail->SMTPDebug  = 2;					 // enables SMTP debug information (for testing)
										   // 1 = errors and messages
										   // 2 = messages only
$mail->SMTPAuth   = true;				  // enable SMTP authentication
$mail->SMTPSecure = "ssl";				 // sets the prefix to the servier
$mail->Host	   = "smtp.gmail.com";	  // sets GMAIL as the SMTP server
$mail->Port	   = 465;				   // set the SMTP port for the GMAIL server
$mail->Username   = "remetente@email.com";  // GMAIL username
$mail->Password   = "senha";			// GMAIL password

$mail->SetFrom('$email', '$nome');

$mail->AddReplyTo("$email","$nome");

$mail->Subject	= $assunto;

//$mail->AltBody	= "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "destinatario@email.com";
$mail->AddAddress($address, "Meu Nome");


if(!$mail->Send()) {
  echo "Erro no envio da mensagem: " . $mail->ErrorInfo;
} else {
  echo "<script>alert(\"Mensagem enviada com sucesso!\")</script>";
}

?>

</body>
</html>

Bom, testei no servidor local e tudo funcionou perfeitamente. Porém, quando coloquei no servidor web o script simplesmente não faz nada, a tela fica branca. Gostaria de saber se o servidor precisa ter alguma configuração ou permissão especial para que se rode o script. Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vamos lá. Testei novamente o script no servidor web. Desta vez deu o seguinte erro:

 

Fatal error: Call to undefined function: date_default_timezone_set() in /home/www/meusite/enviar.php on line 9

 

 

Retirei a função e deu o seguinte erro:

 

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/www/meusite/class.phpmailer.php on line 53

 

 

 

Pergunta: esta função não é "padrão" do php? Por que o script não está conseguindo chamá-la, alguma idéia?

 

Aproveitando, gostaria de saber se existe um meio mais simples de enviar um email por formulário em um servidor comum, desses que se encontra grátis por aí mesmo. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O PHPMailer é grátis e, particularmente, eu considero ele o mais simples que existe.

 

Esse erro:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/www/meusite/class.phpmailer.php on line 53

Geralmente acontece quando você chamou alguma função do PHPMailer de forma errada... Verifica se você fez tudo certinho e, não menos importante, se a classe está atualizada.

 

Se interessar, dá uma olhada nesse tutorial.

 

Abraços http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é a última versão. Mas veja bem, eu não chamei fução nenhuma na verdade. Coloquei o script exatamente como ele está no localhost (ou seja, funcionando) e ele apresentou o erro do date_default_timezone_set(). Depois simplesmente retirei essa função e postei aqui o erro que apareceu, para que pudessem avaliar.

 

Gostaria de saber se alguém tem idéia do porque essa função não está sendo chamada no servidor web..

 

 

EDIT: Poblema resolvido, meu servidor web não é php5, o que inviabiliza o uso do phpmailer. De qualquer forma, obrigado a todos que ajudaram.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando PHP 4, certo?

 

http://www.php.net/date_default_timezone_set

Só funciona em PHP 5

 

E o erro de sintaxe é o seguinte: você baixou o PHPMailer para PHP 5, que usa modificadores de visibilidade (public, private, protected), certo? Se sim, é por isso que dá o erro, já que o PHP 4 não reconhece esses modificadores.

 

 

Recomendo mudar para o PHP 5 o mais breve possível

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, sim, como disse ali no edit eu não tinha me dado conta que o servidor era php 4. Na verdade estou usando esse servidor (grátis) só para testes. Em casa tenho o php 5 e por isso mesmo estava funcionando.

 

Mas muito obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aham, valeu pela informação, sempre bom saber para qualquer eventualidade.

 

Mas estou usando realmente apenas para testes e já consegui resolver o problema. Muito obrigado novamente e por mim pode fechar o tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.