Send.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief отправка email с сайта
6  *
7  */
8 
9 namespace Wrong\Mail;
10 
11 use Wrong\Start\Env;
12 use PHPMailer\PHPMailer\PHPMailer;
13 use PHPMailer\PHPMailer\SMTP;
14 use PHPMailer\PHPMailer\Exception;
15 
16 /**
17  * @brief Send класс отвечает за отправку почты
18  *
19  */
20 
21 class Send
22 {
23  /**
24  * отправляет электронное письмо пользователю со ссылкой для сброса пароля.
25  *
26  * @param object $user пользовательский объект
27  */
28  public static function forgot($user)
29  {
30  if (!Env::$e->EMAIL) return;
31  $subject = 'Восстановление пароля ' . Env::$e->HTTP_HOST;
32  $body = "Вы запросили восстановление пароля. Для этого перейдите по ссылке: " . (Env::$e->IS_SECURE ? 'https' : 'http') . "://" . Env::$e->HTTP_HOST . "/remind/{$user->id}/" . md5($user->email . $user->md5password);
33  self::is_smtp() ? self::mail_smtp($user->email, $subject, $body) : self::mail($user->email, $subject, $body);
34  }
35 
36  /**
37  * отправляет электронное письмо пользователю со ссылкой для подтверждения своего адреса
38  * электронной почты.
39  *
40  * @param object $user пользовательский объект
41  */
42  public static function confirm($user)
43  {
44  $subject = 'Подтверждение почты ' . Env::$e->HTTP_HOST;
45  $body = "Для подтверждения почты перейдите по ссылке: " . (Env::$e->IS_SECURE ? 'https' : 'http') . "://" . Env::$e->HTTP_HOST . "/email-confirm/{$user->id}/" . md5($user->email . $user->md5password);
46  self::is_smtp() ? self::mail_smtp($user->email, $subject, $body) : self::mail($user->email, $subject, $body);
47  }
48 
49  /**
50  * Если установлены переменные среды SMTP, SMTP_HOST, SMTP_PORT, MAIL_USERNAME и SMTP_PASSWORD,
51  * возвращает значение true. Проверка на отправку через smtp
52  *
53  * @return bool
54  */
55  private static function is_smtp()
56  {
57  return Env::$e->SMTP && Env::$e->SMTP_HOST && Env::$e->SMTP_PORT && Env::$e->MAIL_USERNAME && Env::$e->SMTP_PASSWORD;
58  }
59 
60  /**
61  * Отправка почты стандартными функциями
62  */
63  private static function mail($email, $subject, $body)
64  {
65  if (!Env::$e->EMAIL) return;
66  $subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
67  $headers = "Content-type: text/html; charset=utf-8\r\n";
68  $headers .= "From: " . Env::$e->MAIL_USERNAME . "\r\n";
69  mail(
70  $email,
71  $subject,
72  $body,
73  $headers,
74  '-f ' . Env::$e->MAIL_USERNAME
75  );
76  }
77 
78  /**
79  * отправка при помощи smtp
80  */
81  private static function mail_smtp($email, $subject, $body)
82  {
83  if (!Env::$e->EMAIL) return;
84  $mail = new PHPMailer(true);
85  try {
86  //Server settings
87  // $mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output
88  $mail->isSMTP(); //Send using SMTP
89  $mail->Host = Env::$e->SMTP_HOST; //Set the SMTP server to send through
90  $mail->SMTPAuth = true; //Enable SMTP authentication
91  $mail->Username = Env::$e->MAIL_USERNAME; //SMTP username
92  $mail->Password = Env::$e->SMTP_PASSWORD; //SMTP password пароль самой почты UPLuRu28*tuu
93  $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
94  $mail->Port = Env::$e->SMTP_PORT; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
95 
96  $mail->CharSet = "utf-8";
97  //Recipients
98  $mail->setFrom(Env::$e->MAIL_USERNAME);
99  $mail->addAddress($email); //Add a recipient
100 
101  //Content
102  $mail->isHTML(true); //Set email format to HTML
103  $mail->Subject = $subject;
104  $mail->Body = $body;
105  $mail->send();
106  } catch (Exception $e) {
107  // echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
108  }
109  }
110 }
Send класс отвечает за отправку почты
Definition: Send.php:22
static mail($email, $subject, $body)
Definition: Send.php:63
static is_smtp()
Definition: Send.php:55
static forgot($user)
Definition: Send.php:28
static mail_smtp($email, $subject, $body)
Definition: Send.php:81
static confirm($user)
Definition: Send.php:42
Env класс управляющий, добавляющий или записывающий переменные среды
Definition: Env.php:17
static $e
Definition: Env.php:22
$user
Definition: from-user.php:38
if(!($row=Wrong\Models\Crontabs::find($_GET['id']))) if($row->method=='CLI') $headers