Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal...
Há algum tempo comecei a estudar mais sobre classes. Para efeito de estudos, junto com a PHPMailer, to criando uma "classezinha" para envio de e-mail.
a classe...
<?php
include 'phpmailer.php';
class enviarEmail {
public $nomeContato;
public $emailContato;
public $assunto;
public $conteudo;
public $emailDestinatario;
public $nomeDestinatario;
public $copia;
public $emailCopia;
public $nomeCopia;
public $hostMail;
public $authMail;
public $senhaAuthMail;
public $erro;
public function enviar(){
$mail = new PHPMailer(); // Cria a instância
$mail->SetLanguage("br"); // Define o Idioma
$mail->CharSet = "UTF-8"; // Define a Codificação
//$mail->IsSMTP(); // Define que será enviado por SMTP
//$mail->SMTPAuth = true; // Caso o servidor SMTP precise de autenticação
//$mail->Host = $this->host; // Servidor SMTP
//$mail->Username = $this->authMail; // Usuário ou E-mail para autenticação no SMTP
//$mail->Password = $this->senhaAuthMail; // Senha do E-mail
$mail->IsHTML(true); // Enviar como HTML
$mail->From = $this->emailContato; // Define o Remetente
$mail->FromName = $this->nomeContato; // Nome do Remetente
$mail->AddAddress($this->emailContato, $this->nomeContato); // Email e Nome do destinatário
//$copia ? $mail->AddCC($this->emailCopia, $this->nomeCopia) : NULL; // Cópia
// Configuração de Assuntos e Corpo do E-mail
$mail->Subject = $this->assunto; // Define o Assunto
$mail->Body = $this->conteudo;
if(!$mail->Send()) {
$this->erro = $mail->ErrorInfo;
return false;
}
}
}
?>
envia.php
<?php
include 'enviar-email.php'; // classe
$body = "Estou testando classe de envio de e-mail!";
$email = new enviarEmail;
$email->emailDestinatario = 'meu@email.com';
$email->emailContato = 'email';
$email->nomeContato = 'nome';
$email->assunto = 'Teste';
$email->conteudo = $body;
$email->hostMail = 'mail.meudominio.com';
$email->authMail = 'email_para_autenticacao';
$email->senhaAuthMail = 'senha';
if(!$email->enviar()) {
echo 'Falhou...';
echo $email->erro;
} echo 'E-mail enviado com sucesso!';
}
?>
Ao executar, informa que não foi possível instanciar a classe...
Could not instantiate mail function. Falhou...
Já to a horas procurando algo errado, refiz tudo, mas não consegui...
onde errei?
Sim. Meu intuito é apenas para estudo.
Quero refazer meus códigos utilizando classes.
Esse aí é apenas um teste.
Só com PHPMailer tá funcionando legal.
Só quero entender porque não está funcionando desta forma aí acima...
Será que não dá para criar uma classe utilizando referência de outra?
Tente incluir o arquivo dentro da função, em cima da linha que você cria a instância.
Até.
Já havia feito isso... o erro persiste.
Outro teste que fiz, foi exibir algum valor da classe PHPMailer ao invés de retornar a função Send(). Fazendo isto, o valor é retornado normalmente.
EX:
public function enviar() {
...
echo $mail->Charset;
...
}
O valor é exibido normalmente...
>
Não entendi... você fez uma classe de uma linguagem estruturada que faz referência à uma classe?
Não é mais fácil, rápido, eficiente e simples utilizar a própria classe PHPMailer, que faz tudo isso?
Nem sempre H4X0R.
Não sei se é o caso da PHPMailer, que acredito se quiser, nunca usei. Mas tem algumas classes que fazem verdadeiras mágicas, mas por mau desenvolvimento ou não, requerem uma série de comandos sequenciais, muitos deles preparatórios antes de disparar a ação final.
Se quem usa não tem entendimento para recriar a funcionalidade, pode criar (ou acaba criando) uma função/método de classe para ser usado como wrapper, para simplificar a tarefa.
Comigo, foi o caso quando usei o plugin de paginação Smarty_Paginate.
OFF: Esse tipo de wrapper, não é uma derivação do Façade?
Não entendi... você fez uma classe de uma linguagem estruturada que faz referência à uma classe?
Não é mais fácil, rápido, eficiente e simples utilizar a própria classe PHPMailer, que faz tudo isso?