Skip to content

Instantly share code, notes, and snippets.

@robsonvleite
Last active May 29, 2025 04:39
Show Gist options
  • Save robsonvleite/3b818786d12a72e390e4b25d10677cec to your computer and use it in GitHub Desktop.
Save robsonvleite/3b818786d12a72e390e4b25d10677cec to your computer and use it in GitHub Desktop.
<?php
namespace Source\Support;
use Exception;
use PHPMailer\PHPMailer\PHPMailer;
use stdClass;
class Email
{
/** @var PHPMailer */
private $mail;
/** @var stdClass */
private $data;
/** @var Exception */
private $error;
public function __construct()
{
$this->mail = new PHPMailer(true);
$this->data = new stdClass();
$this->mail->isSMTP();
$this->mail->isHTML();
$this->mail->setLanguage("br");
$this->mail->SMTPAuth = true;
$this->mail->SMTPSecure = "tls";
$this->mail->CharSet = "utf-8";
$this->mail->Host = MAIL["host"];
$this->mail->Port = MAIL["port"];
$this->mail->Username = MAIL["user"];
$this->mail->Password = MAIL["passwd"];
}
public function add(string $subject, string $body, string $recipient_name, string $recipient_email): Email
{
$this->data->subject = $subject;
$this->data->body = $body;
$this->data->recipient_name = $recipient_name;
$this->data->recipient_email = $recipient_email;
return $this;
}
public function attach(string $filePath, string $fileName): Email
{
$this->data->attach[$filePath] = $fileName;
return $this;
}
public function send(string $from_name = MAIL["from_name"], string $from_email = MAIL["from_email"]): bool
{
try {
$this->mail->Subject = $this->data->subject;
$this->mail->msgHTML($this->data->body);
$this->mail->addAddress($this->data->recipient_email, $this->data->recipient_name);
$this->mail->setFrom($from_email, $from_name);
if (!empty($this->data->attach)) {
foreach ($this->data->attach as $path => $name) {
$this->mail->addAttachment($path, $name);
}
}
$this->mail->send();
return true;
} catch (Exception $exception) {
$this->error = $exception;
return false;
}
}
public function error(): ?Exception
{
return $this->error;
}
}
@programadorws14
Copy link

Show Rob!

@isceddaniel
Copy link

Valeu!

@carlosvalter
Copy link

Show Robson

@yuriPeixoto
Copy link

Valeu, muito obrigado.

@paulo-correia
Copy link

Robson,
Tem como disponibilizar todos os fontes?
Fiz tudo, mas o e-mail não enviou, não está salvando o "forget" no banco de dados, ao tentar se cadastrar sem ter conta via Facebook ou Google está apresentando "o e-mail informado já está em uso".
Se tiver os fontes consigo comparar melhor onde errei.

E se tiver dicas para quem usa VsCode no lugar do PhpStorm, tipo que extensões instalar para que fique tão simples quanto o PhpStorm agradeço ;)

Copy link

ghost commented May 13, 2020

Valeu, muito obrigado DEV RAIZ PHP do Jeito Certo!!!!!! :-)

@nettopaulo
Copy link

Robson,
Tem como disponibilizar todos os fontes?
Fiz tudo, mas o e-mail não enviou, não está salvando o "forget" no banco de dados, ao tentar se cadastrar sem ter conta via Facebook ou Google está apresentando "o e-mail informado já está em uso".
Se tiver os fontes consigo comparar melhor onde errei.

E se tiver dicas para quem usa VsCode no lugar do PhpStorm, tipo que extensões instalar para que fique tão simples quanto o PhpStorm agradeço ;)

Você está enviando por qual email?

@paulo-correia
Copy link

Robson,
Tem como disponibilizar todos os fontes?
Fiz tudo, mas o e-mail não enviou, não está salvando o "forget" no banco de dados, ao tentar se cadastrar sem ter conta via Facebook ou Google está apresentando "o e-mail informado já está em uso".
Se tiver os fontes consigo comparar melhor onde errei.
E se tiver dicas para quem usa VsCode no lugar do PhpStorm, tipo que extensões instalar para que fique tão simples quanto o PhpStorm agradeço ;)

Você está enviando por qual email?

Não lembro mais, ou era por um gmail ou por um hotmail.

Mas, ter os fontes seria o ideal nesse caso, mas o Robson não deixou eles disponíveis :(

@diegogit03
Copy link

Valeu tio

@jenedua
Copy link

jenedua commented Nov 6, 2021

legal robson show de bola

@zzjunior
Copy link

Top, valeuzão robson!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment