<< Click to Display Table of Contents >> PHPMailer |
![]() ![]() ![]() |
Use o composer
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;
};
{
"require": {
"phpmailer/phpmailer": "~6.0"
}
}
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 $caminho, string $arquivo): Email {
$this->anexos[$caminho] = $arquivo;
return $this;
}
public function enviar(string $nomedestino, string $emaildestino, string $assunto, string $mensagem): bool {
if (!filter_var($emaildestino, FILTER_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_DE, Email::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;
}
}
}