Fatal error: Class 'Mail' not found in xampp php Pear Mail mail.php

Asked

Viewed 351 times

-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?

  • 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();

  • Make the call like this, $mime = new \Mail_mime();

  • I don’t understand, you can explain better. Thank you

  • Add a bar before the class name, when creating the object, in theory this class in the same namespace.

  • 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();)

Show 1 more comment

1 answer

0

Following the tip of the friends we managed to solve. thank you all.

$mime = new \Mail_mime();

Browser other questions tagged

You are not signed in. Login or sign up in order to post.