-
-
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; | |
} | |
} |
Valeu!
Show Robson
Valeu, muito obrigado.
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 ;)
Valeu, muito obrigado DEV RAIZ PHP do Jeito Certo!!!!!! :-)
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?
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 :(
Valeu tio
legal robson show de bola
Top, valeuzão robson!
Show Rob!