Ir ao conteúdo

Posts recomendados

Postado

Boa tarde 
Estou finalizando um formulário de contato e me deparei com este erro:
Fatal error: Call to a member function IsSMTP() on null in C:\Users\##########################\enviar.php on line 20 (20   $this->objmail->IsSMTP ();) 

Aparentemente o código está correto mas sempre retorna esta mesma mensagem que citei... alguém pode me ajudar a entender o que pode ser?

Segue o código:

<?php
require_once 'PHPMailer/PHPMailerAutoload.php';

class Funcoes{

private $objmail;

public function _construct(){
	$this->$objmail = new PHPMailer();
}
public function tratarCaracter($vlr,$tipo){
	switch($tipo){
		case 1: $rst = utf8_decode($vlr); break;
		case 2: $rst = htmlentities($vlr, ENT_QUOTES, "ISO-8859-1"); break;
	}
	return $rst;
}
public function  enviarEmail($dados){
	
	$this->objmail->IsSMTP();
	$this->objmail->SMTPAuth = true;
	$this->objmail->SMTPSecure = 'tls';
	$this->objmail->Port = 587;
	$this->objmail->Host = 'smtp.dominio.com.br';
	$this->objmail->Username = 'email@.com.br';
	$this->objmail->Password = 'password';
	$this->objmail->ContentType = 'text/html; CharSet=utf-8';
	$this->objmail->SetFrom('email@.com.br', 'Titulo');
	$this->objmail->AddAddress('email@gmail.com', nome - Recebe1');
	$this->objmail->Subject  = ''.$this->tratarCaracter($dados['assunto'], 1).'';
	
	
	$html = '<p><strong>Nome:</strong> ' .$this->tratarCaracter($dados['nome'], 1).'<br>';
	$html .= '<strong>E-mail:</strong> ' .$dados['email'] .'<br>';
	$html .= '<strong>Assunto:</strong> ' .$this->tratarCaracter($dados['assunto'], 1).'<br>';
	$html .= '<strong>Mensagem:</strong><br>';
	$html .= $this->tratarCaracter ($dados['mensagem'], 1) .'</p>';
	
	$this->objmail->MsgHTML($html);
	
	if(!$this->objmail->Send()){
		echo "Error" .$this->objmail->ErrorInfo;
	}else{
		echo "Mensagem enviada";
	}
}
}
?>

 

Postado

@Agamoto

testa assim :

<?php
require_once 'PHPMailer/PHPMailerAutoload.php';

class Funcoes{

private $objmail;

public function _construct(){
	$this->$objmail = new PHPMailer();
}
public function tratarCaracter($vlr,$tipo){
	switch($tipo){
		case 1: $rst = utf8_decode($vlr); break;
		case 2: $rst = htmlentities($vlr, ENT_QUOTES, "ISO-8859-1"); break;
	}
	return $rst;
}
public function  enviarEmail($dados){
	
	$this->$objmail->IsSMTP();
	$this->$objmail->SMTPAuth = true;
	$this->$objmail->SMTPSecure = 'tls';
	$this->$objmail->Port = 587;
	$this->$objmail->Host = 'smtp.dominio.com.br';
	$this->$objmail->Username = 'email@.com.br';
	$this->$objmail->Password = 'password';
	$this->$objmail->ContentType = 'text/html; CharSet=utf-8';
	$this->$objmail->SetFrom('email@.com.br', 'Titulo');
	$this->$objmail->AddAddress('email@gmail.com', nome - Recebe1');
	$this->$objmail->Subject  = ''.$this->tratarCaracter($dados['assunto'], 1).'';
	
	
	$html = '<p><strong>Nome:</strong> ' .$this->tratarCaracter($dados['nome'], 1).'<br>';
	$html .= '<strong>E-mail:</strong> ' .$dados['email'] .'<br>';
	$html .= '<strong>Assunto:</strong> ' .$this->tratarCaracter($dados['assunto'], 1).'<br>';
	$html .= '<strong>Mensagem:</strong><br>';
	$html .= $this->tratarCaracter ($dados['mensagem'], 1) .'</p>';
	
	$this->objmail->MsgHTML($html);
	
	if(!$this->objmail->Send()){
		echo "Error" .$this->objmail->ErrorInfo;
	}else{
		echo "Mensagem enviada";
	}
}
}
?>

 

Postado

Mudei o Formulário, este aqui funciona perfeitamente é um formulário bem simples mas quem for usar pode incrementar com css como preferir, lembrando que foi usado aqui a classe PHPMailer e sempre usar a versão mais recente 

Segue o Código:

 

enviar.php

<?php
// Adiciona o arquivo class.phpmailer.php - você deve especificar corretamente o caminho da pasta.
require_once("PHPMailer/PHPMailerAutoload.php");
// Aqui inicia a classe PHPMailer
$mail = new PHPMailer();
 
//  DADOS DE AUTENTICAÇÃO - Você deve alterar conforme o seu domínio da sua hospedagem!
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "seudomínio.com.br"; // Seu endereço de host SMTP(seu domínio)
$mail->SMTPAuth = true; // Define que será utilizada a autenticação -  Mantenha o valor "true"
$mail->Port = 587; // Porta de comunicação SMTP - Na maioria das vezes se usa a porta"587", mas confirme com sua hospedagem a porta correta.
$mail->SMTPSecure = false; // Define se é utilizado SSL/TLS - Mantenha o valor "false"
$mail->SMTPAutoTLS = false; // Define se, por padrão, será utilizado TLS - Mantenha o valor "false"
$mail->Username = 'emaildasuahospedagem.com.br'; // Conta de email existente e ativa em seu domínio
$mail->Password = 'senhadoemaildasuahospedagem'; // Senha da sua conta de email que você fez dentro da sua hospedagem
 
// DADOS DO REMETENTE
$mail->Sender = "emaildasuahospedagem.com.br"; // Conta de email existente e ativa em seu domínio
$mail->From = "emaildasuahospedagem.com.br"; // repita o mesmo e-mail
$mail->FromName = "nome do site"; // Nome do site 
 
// DADOS DO DESTINATÁRIO
$mail->AddAddress('seuemail@.gom.br', 'seu nome'); // Aqui é o email que você quer que receba as mensagens do formulário
//$mail->AddAddress('recebe2@dominio.com.br'); // Define qual conta de email receberá a mensagem
//$mail->AddCC('copia@dominio.net'); // Define qual conta de email receberá uma cópia
//$mail->AddBCC('copiaoculta@dominio.info'); // Define qual conta de email receberá uma cópia oculta
 
// Definição de HTML/codificação
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'utf-8'; // Charset da mensagem 
 
// DEFINIÇÃO DA MENSAGEM
$mail->Subject  = "Formulário de Contato"; // Assunto da mensagem
$mail->Body .= " Nome: ".$_POST['nome']."<br>"; // Texto da mensagem
$mail->Body .= " E-mail: ".$_POST['email']."<br>"; // Texto da mensagem
$mail->Body .= " Assunto: ".$_POST['assunto']."<br>"; // Texto da mensagem
$mail->Body .= " Mensagem: ".nl2br($_POST['mensagem'])."<br>"; // Texto da mensagem
 
// ENVIO DO EMAIL
$enviado = $mail->Send();
// Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
 
// Exibe uma mensagem de resultado do envio 
if ($enviado) {
  echo "<script>window.location='contato.php';alert('$_POST[nome], sua mensagem foi enviada com sucesso! Estaremos retornando em breve');</script>";
} else {
  echo "Não foi possível enviar o e-mail.";
  echo "<b>Detalhes do erro:</b> " . $mail->ErrorInfo;
}

contato.php


	
	<div id="formulario">
	<form action="enviar.php" method="post">
	<table width="80" border="0" cellspacing="5px">
  <tbody>
    <tr>
      <td width="80">Nome:</td>
      <td><input name="nome" type="text" id="nome" size="30"></td>
    </tr>
    <tr>
      <td>E-mail:</td>
      <td><input name="email" type="email" id="email" size="30"></td>
    </tr>
    <tr>
      <td>Assunto:</td>
      <td><input name="assunto" type="text" id="assunto" size="30"></td>
    </tr>
    <tr>
      <td>Mensagem:</td>
      <td><textarea name="mensagem" cols="45" rows="7" maxlength="300" id="mensagem"></textarea></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td align="right"><input name="btEnviar" type="submit" id="btEnviar" value="Enviar"></td>
    </tr>
  </tbody>
</table>

</form>

</div>
	    		
	
	
	

 

adicionado 10 minutos depois

@luscas

Valeu mesmo, muito obrigado é que já tinha mudado o formulário inteiro mas vou usar a sua dica sim em outro projeto.

  • Curtir 2
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!