TNT 0 Denunciar post Postado Abril 20, 2009 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
Beraldo 864 Denunciar post Postado Abril 20, 2009 No topo do script, coloque ini_set('display_errors', 1); error_reporting(E_ALL); Execute novamente e veja se aparece erro. Compartilhar este post Link para o post Compartilhar em outros sites
TNT 0 Denunciar post Postado Abril 20, 2009 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
~TiuTalk~ 7 Denunciar post Postado Abril 20, 2009 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
TNT 0 Denunciar post Postado Abril 21, 2009 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
Beraldo 864 Denunciar post Postado Abril 21, 2009 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
TNT 0 Denunciar post Postado Abril 21, 2009 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
~TiuTalk~ 7 Denunciar post Postado Abril 21, 2009 Só pra constar... Existe versão do PHPMailer pro PHP 4 tá? ;) Compartilhar este post Link para o post Compartilhar em outros sites
TNT 0 Denunciar post Postado Abril 21, 2009 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