Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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, 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.
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
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.
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
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.
Só pra constar... Existe versão do PHPMailer pro PHP 4 tá? ;)
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.
No topo do script, coloque
Execute novamente e veja se aparece erro.