-4
I have an app with namespace set. I use Mail/Mail.php and mime.php to send email. I have a scope problem. I include the email class within my scope. The error output is:
Fatal error: Class 'Mail' not found in xampp php Pear Mail mail.php
My full class:
<?php
namespace esms;
require_once $_SERVER['DOCUMENT_ROOT'] . '/model/persistence/vo/esms_conta_vo.class.php';
//require_once $_SERVER['DOCUMENT_ROOT'] . "/model/service/sessao_service.class.php";
use esms\esms_conta_vo;
/**
* Description of envia_email_service
*/
class envia_email_service {
//construtor
public function __construct() {
}
/**
* @author WIllian ThyagoOP
* Envia email
* @param esms_conta_vo $esms_conta_vo vo
* @param type $id id ovjeto vo
* @param string $tipo tipo do email
* @param int $id_cobranca id relacionado a cobrança
*/
public function envia_email(& $esms_vo, $tipo, $id_cobranca = 0) {
if (! ($esms_vo instanceof esms_conta_vo)) {
return NULL;
}
$id = $esms_vo->get_id();
$nome = $esms_vo->get_nome();
$email = $esms_vo->get_email();
include_once("Mail/Mail.php");
include_once("mime.php");
$mime = new Mail_mime();
//$headers["From"] = "[email protected]";
$headers["From"] = "[email protected]";
$headers["To"] = $email;
$headers["Subject"] = "";
$headers["Charset"] = "utf-8";
$headers["Date"] = date("r");
$params["host"] = "smtp.empresa.com.br";
$params["port"] = "587";
$params["auth"] = 'PLAIN';
$params["username"] = "[email protected]";
$params["password"] = "**********";
if ($tipo == "bemvindo") {
$headers["Subject"] = "[empresa] Seja bem-vindo";
ob_start();
include("/home/empresa/scripts/email_bemvindo.php");
$html = ob_get_contents();
ob_end_clean();
}
if ($tipo == "send") {
$headers["Subject"] = "[E-SMS] Ative já sua conta!";
ob_start();
// require_once ($_SERVER['DOCUMENT_ROOT'] . '/emails/registro/email.php');
$_POST['email'] = $email;
$_POST['nome'] = $nome;
require_once ($_SERVER['DOCUMENT_ROOT'] . "/email.php");
$html = ob_get_contents();
ob_end_clean();
// Anexa boleto em PDF
//$mime->addAttachment("/home/empresa/pdfs/".$pagamentos_row['id_transacao'].".pdf");
}
if ($tipo == "cobranca") {
$headers["Subject"] = "[empresa] Remessa de Boleto Bancário";
ob_start();
include("/home/empresa/scripts/email_cobranca.php");
$html = ob_get_contents();
ob_end_clean();
// Anexa boleto em PDF
//$mime->addAttachment("/home/empresa/pdfs/".$pagamentos_row['id_transacao'].".pdf");
}
if ($tipo == "cobranca_aviso_venc") {
$headers["Subject"] = "[empresa] Aviso de vencimento";
ob_start();
include("/home/empresa/scripts/email_cobranca_avisovencimento.php");
$html = ob_get_contents();
ob_end_clean();
}
if ($tipo == "cobranca_aviso_pagaberto") {
$headers["Subject"] = "[empresa] Aviso de pagamento em aberto";
ob_start();
include("/home/empresa/scripts/email_cobranca_avisopagaberto.php");
$html = ob_get_contents();
ob_end_clean();
}
if ($tipo == "senha") {
$headers["Subject"] = "[empresa] Reenvio de senha";
ob_start();
include("/home/empresa/scripts/email_senha.php");
$html = ob_get_contents();
ob_end_clean();
}
$mime->setTXTBody(strip_tags($html));
$mime->setHTMLBody($html);
$body = "";
$body = $mime->get();
$headers = $mime->headers($headers);
$mail_object = & Mail::factory("smtp", $params);
$send = $mail_object->send($email, $headers, $body);
if (PEAR::isError($send))
return false;
else
return true;
}
public function envia_email_c($de, $para, $assunto, $mensagem) {
include_once("Mail.php");
include_once("Mail/mime.php");
$from = $de;
$to = $para;
$subject = $assunto;
$body = $mensagem;
$host = "smtp.empresa.com.br";
$username = "[email protected]";
$password = "*******";
$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);
$smtp = Mail::factory('smtp', array('host' => $host, 'auth' => 'PLAIN', 'username' => $username,
'password' => $password, 'starttls' => false, 'debug' => false));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail))
return false;
else
return true;
}
public function envia_email_h($de, $para, $assunto, $mensagem) {
include_once("Mail.php");
include_once("Mail/mime.php");
$email = $para;
$headers["From"] = $de;
$headers["To"] = $para;
$headers["Subject"] = $assunto;
$headers["Charset"] = "utf-8";
$headers["Date"] = date("r");
$params["host"] = "smtp.empresa.com.br";
$params["port"] = "587";
$params["auth"] = true;
$params["username"] = "[email protected]";
$params["password"] = "******";
ob_start();
include("/home/empresa/scripts/email_timbrado.php");
$html = ob_get_contents();
ob_end_clean();
$mime = new Mail_mime();
$mime->setTXTBody(strip_tags($html));
$mime->setHTMLBody($html);
$body = $mime->get();
$headers = $mime->headers($headers);
$mail_object = & Mail::factory("smtp", $params);
$send = $mail_object->send($email, $headers, $body);
if (PEAR::isError($send)) {
//echo $send->getMessage();
return false;
} else {
return true;
}
}
}
That’s legacy code right there?
– rray
No! It is just a class, with a defined namespace, that needs to instantiate a class, which does not have a defined namespace. include_once("Mail/Mail.php"); include_once("mime.php"); $mime = new Mail_mime();
– willian rodrigues andrade
Make the call like this,
$mime = new \Mail_mime();
– rray
I don’t understand, you can explain better. Thank you
– willian rodrigues andrade
Add a bar before the class name, when creating the object, in theory this class in the same namespace.
– rray
Fatal error: Class 'Mail_mime' not found in C: xampp htdocs E-SMS-DEVEL model service envia_email_service.class.php on line 42 I made the change ($mime = new Mail_mime();)
– willian rodrigues andrade