Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
// Arquivo 1
<?php
namespace admin\controls;
class report_bug
{
/ Pasta para salvar o arquivo de log - default = logs /
protected $patch_log = '/logs';
/* Host em que o sistema está hospedado e enviará o e-mail */
protected $host = 'smtp.example.com.br';
/* Endereço do e-mail de envio */
protected $email_auth = 'errors_log@example.com.br';
/* Senha para autenticação */
protected $pass_auth = '********';
/* E-mail que receberá os logs. - Não altere está linha */
protected $email_send = 'errors_log@example.com.br';
/* Site name - Identificador da origem do erro */
protected $site_name = 'Site - example.com.br';
/* Página, script ou ação que gerou o erro */
private $source_error;
/* Error - Pode ser erro do sistema ou personalizado */
private $error_message = 'Default Message';
/* Tipo do erro - Desconhecido, warning, error, info */
private $error_type;
/* Data e hora do erro */
private $error_time;
public function __construct($source, $message, $type, $time)
{
$this->source_error = $source;
$this->error_message = $message;
$this->error_type = $type;
$this->error_time = $time;
}
public function sendMail()
{
require_once($_SERVER['DOCUMENT_ROOT'].'/libs/PHPMailer/PHPMailerAutoload.php');
$Email = new PHPMailer();
$send = $Email->IsSMTP(); // set mailer to use SMTP
$send = $Email->SMTPAuth = true; // turn on SMTP authentication
$send = $Email->Host = "smtp.example.com.br";
$send = $Email->Username = "errors_log@example.com.br";
$send = $Email->Password = "********";
$send = $Email->SMTPsecure = 'tls' ;
// na classe, há a opção de idioma, setei como br
$send = $Email->SetLanguage("br");
// esta chamada diz que o envio será feito através da função mail do php. Você mudar para sendmail, qmail, etc
// se quiser utilizar o programa de email do seu unix/linux para enviar o email
//$Email->IsMail(); // ativa o envio de e-mails em HTML, se false, desativa.
$send = $Email->IsHTML(true);
// responder para
// email do remetente da mensagem
$send = $Email->From = 'errors_log@example.com.br';
// nome do remetente do email
$send = $Email->FromName = 'site fácil';
// Endereço de destino do email, ou seja, pra onde você quer que a mensagem do formulário vá?
$send = $Email->AddAddress("errors_log@example.com.br");
// informando no email, o assunto da mensagem
$send = $Email->Subject = 'teste ';
// Define o texto da mensagem (aceita HTML)
$send = $Email->Body .= "<p><strong>E-mail enviado pelo visitante: </strong> </p><br>";
$send = $Email->Body .= "<p><strong>E-mail do visitante: </strong> </p><br>";
$send = $Email->Body .= "<p><strong>Telefone do visitante: </strong> </p><br>";
$send = $Email->Body .= "<p><strong>Mensagem do visitante: </strong><p>";
$send = $Email->Send();
if(!$send )
{
echo 'não foi';
echo "Erro: " .$send = $Email->ErrorInfo;
}else{
echo 'foi';
}
}
}
// Arquivo 2
<?php
require_once ($_SERVER['DOCUMENT_ROOT'].'/config/autoload.php');
$error_log = new admin\controls\report_bug($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], 'teste de envio de e-mail.', 'WARNING', $time);
$error_log->sendMail();
Estou começando a trabalhar com classes, tenho dificuldades de entender certas coisas.Por exemplo: não sei o que estou fazendo de errado nessa classe, PHPMailer funciona perfeitamente fora dessa classe, mais ai dentro não funciona e nenhum erro é me retornado.
Como eu disse não entendo muito bem ainda, estou tentando aprender mais tem coisas que precisamos de uma mãozinha.
Muito obrigado!
Problema resolvido.
Não tinha percebido que no PHPmailer os arquivos começam com class.name.php e meu autoload só carregava name.class.php
Leia e entenda sobre Especificações de Namespaces, antes de Sair colando código dentro de classes
Principalmente na Regra 6
>
All class names MUST be referenced in a case-sensitive fashion.
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
http://www.php-fig.org/psr/psr-4/
Mastigado
https://davidlima.com.br/post/php-fig-e-as-psr--parte-1/
E depois habilite os erros do PHP e PHPMailer, que com certeza saberá onde esta o erro.