You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.6 KiB
72 lines
1.6 KiB
<?php |
|
|
|
namespace App\Classes; |
|
|
|
use Tx\Mailer; |
|
|
|
class Mail { |
|
|
|
protected static $host; |
|
protected static $port; |
|
protected static $name; |
|
protected static $username; |
|
protected static $password; |
|
protected static $to; |
|
|
|
public static function _init(): void { |
|
self::$host = Config::c('MAIL_HOST'); |
|
self::$port = Config::c('MAIL_PORT'); |
|
self::$name = Config::c('MAIL_NAME'); |
|
self::$username = Config::c('MAIL_USERNAME'); |
|
self::$password = Config::c('MAIL_PASSWORD'); |
|
self::$to = Config::c('MAIL_TO'); |
|
} |
|
|
|
public static function send( |
|
string $subject, string $message, string $to = '', string $from = ''): bool |
|
{ |
|
if ($to == '') { |
|
$to = self::$to; |
|
} |
|
if ($from == '') { |
|
$from = 'Website <'. self::$username . '>'; |
|
} |
|
|
|
$headers = |
|
'MIME-Version: 1.0' . "\r\n" . |
|
'Content-type: text/html; charset=utf-8' . "\r\n" . |
|
'From: ' . $from . "\r\n" . |
|
'Reply-To: ' . $from . "\r\n" . |
|
'X-Mailer: PHP/' . phpversion(); |
|
|
|
return mail($to, $subject, $message, $headers); |
|
} |
|
|
|
public static function sendMail(string $subject, string $message, string $from = '', string $to = ''): bool |
|
{ |
|
if ($to == '') { |
|
$to = self::$to; |
|
} |
|
if ($from == '') { |
|
$from = self::$name; |
|
} |
|
if (empty(self::$host) || empty(self::$port) || |
|
empty(self::$username) || empty(self::$password) || empty($to)) { |
|
return false; |
|
} |
|
|
|
$result = (new Mailer()) |
|
->setServer(self::$host, self::$port, "tlsv1.2") |
|
->setAuth(self::$username, self::$password) |
|
->setFrom($from, self::$username) |
|
->addTo('', $to) |
|
->setSubject($subject) |
|
->setBody($message) |
|
->send(); |
|
|
|
return $result; |
|
} |
|
|
|
} |
|
|
|
Mail::_init();
|
|
|