PHPMailer

<< Click to Display Table of Contents >>

Navigation:  Componentes >

PHPMailer

Previous pageReturn to chapter overviewNext page

Use o composer

 

Principal.php

 

require __DIR__ . '/vendor/autoload.php';
 
use classes\Email;
 
$email = new Email();

 

// opcional (anexo) -- pode-se chamar esse metodo quantas vezes forem necessárias (multi-anexo)
$email->addAnexo(__DIR__."/jedi.jpg""JEDI IMG");

 
if ($email->enviar("Flavio""flavio.junior@gmail.com""Um assunto""<b>Junior</b><p>Um texto</p>")) {
    echo "ENVIADO";
else {
    echo $email->mensagem;
};

 

gmail

 

phpmailer

composer.json

 

{
    "require": {
        "phpmailer/phpmailer""~6.0"
    }
}

 

Email.php

 

namespace classes;
 
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
 
class Email {
 
    const HOST = "smtp.servidor.com.br";
    const USUARIO = "usuario@servidor.com.br";
    const PASSWORD = "?????";
    const PORTA = 26;   // ver qual é a porta
    const EMAIL_DE = "usuario@servidor.com.br";
    const NOME_DE = "Nome de quem envia";
 
    /** @var string */
    public $mensagem;
 
    /** @var PHPMailer */
    private $mail;
 
    /** @var array */
    private $anexos;
 
    public function __construct() {
        $this->mail = new PHPMailer(true);
        $this->mensagem = "";
 
        // configuração
        $this->mail->isSMTP();
        $this->mail->setLanguage("br");
        $this->mail->isHTML(true);
        $this->mail->SMTPAuth = true;
        //   $this->mail->SMTPSecure = 'tls';
        $this->mail->CharSet = 'utf-8';
        $this->mail->SMTPDebug = 1// 2=detalhado, 1=mensagens
        // autenticação
        $this->mail->Host = Email::HOST;
        $this->mail->Username = Email::USUARIO;
        $this->mail->Password = Email::PASSWORD;
        $this->mail->Port = Email::PORTA;
    }
 
    public function addAnexo(string $caminhostring $arquivo): Email {
        $this->anexos[$caminho] = $arquivo;
        return $this;
    }
 
    public function enviar(string $nomedestinostring $emaildestinostring $assuntostring $mensagem): bool {
 
        if (!filter_var($emaildestinoFILTER_VALIDATE_EMAIL)) {
            $this->mensagem = "Email de destino incorreto. " . $emaildestino;
            return false;
        }
 
        if (empty($mensagem)) {
            $this->mensagem = "Mensagem do email incorreta.";
            return false;
        }
 
        try {
            $this->mail->Subject = $assunto;
            $this->mail->msgHTML($mensagem);
            $this->mail->addAddress($emaildestino$nomedestino);
            $this->mail->setFrom(Email::EMAIL_DEEmail::NOME_DE);
 
            // se a matriz anexos estiver preenchida, vamos colocar todos arquivos no $mail
            if (!empty($this->anexos)) {
                foreach ($this->anexos as $caminho => $arquivo) {
                    $this->mail->addAttachment($caminho$arquivo);
                }
            }
 
            $this->mail->send();
 
            return true;
        } catch (Exception $ex) {
 
            $this->mensagem = $ex->getMessage() . "<br>" . $this->mail->ErrorInfo;
            return false;
        }
    }
}