Mailer
in package
Класс для работы с почтой
Class Mailer
Tags
Table of Contents
- CLIENTICON = ['client' => 'icon-commerical-building', 'person' => 'icon-user-1']
- Иконки клиента в зависимости от типа Юр.лицо/Физ.лицо
- FOLDERICON = ['conversation' => '<i class="icon-chat-1 orange"></i>', 'inbox' => '<i class="icon-download-1 blue"></i>', 'outbox' => '<i class="icon-upload-1 broun"></i>', 'draft' => '<i class="icon-doc-text gray"></i>', 'trash' => '<i class="icon-trash gray"></i>', 'sended' => '<i class="icon-forward-1 green"></i>']
- Иконки папок
- FOLDERNAME = ['conversation' => 'Вся почта', 'inbox' => 'Входящее', 'outbox' => 'Исходящее', 'draft' => 'Черновик', 'trash' => 'Корзина', 'sended' => 'Отправлено']
- FOLDERNAME. Имена папок
- PRIORITY = [1 => '<i class="icon-flag-1 red"></i> Высокий', 3 => '<i class="icon-flag-1 blue"></i> Нормальный', 5 => '<i class="icon-flag-1 yelw"></i> Низкий']
- Названия приоритетов для отображения
- PRIORITYICON = ['1' => '<i class="icon-flag-1 red" title="Высокий"></i>', '3' => '<i class="icon-flag-1 blue" title="Нормальный"></i>', '5' => '<i class="icon-flag-1 yelw" title="Низкий"></i>']
- Иконки приоритетов
- TEMPLATE = ' <html lang="ru"> <head> <title>{subject}</title> <STYLE type="text/css"> <!-- body { color:#222; font-size: 14px; line-height:18px; font-family: arial, tahoma,serif; background:#FFF; margin:5px; } div{ padding:5px 0; margin:0; display:block; } p{ padding:2px 0; } hr{ width:102%; border:0 none; border-top: #ccc 1px dotted; padding:0; height:1px; margin:5px -5px; clear:both; } a, a:visited, a:link{ color: #507192; display:inline; } a:active, a:hover{ color:red; } blockquote{ border-left: 2px solid #507192; padding-left: 20px; background: #FAFAFA; } --> </STYLE> </head> <body> {html} </body> </html> '
- базовый шаблон сообщения
- $attach : array<string|int, mixed>
- Параметры для отправки сообщений
- $box : string
- Проверяемая почта: INBOX|SEND
- $boxSettings : mixed
- $copy : array<string|int, mixed>
- Параметры для отправки сообщений
- $days : int
- Число дней проверки почты. Методы: mailGet(), mailGetWorker()
- $db : mixed
- Различные параметры, в основном из GLOBALS
- $Error : array<string|int, mixed>
- Массив ошибок
- $files : array<string|int, mixed>
- Параметры для отправки сообщений
- $fpath : mixed
- Различные параметры, в основном из GLOBALS
- $from : array<string|int, mixed>
- Параметры для отправки сообщений
- $html : string
- Параметры для отправки сообщений
- $id : int
- ID сообщения
- $identity : mixed
- Различные параметры, в основном из GLOBALS
- $iduser : mixed
- ID сотрудника, от которого идет отправка Применяется для загрузки настроек почты
- $iduser1 : mixed
- Различные параметры, в основном из GLOBALS
- $ignoreExist : bool
- Нужно ли игнорировать существующие сообщения при проверке почты
- $ivc : mixed
- Различные параметры, в основном из GLOBALS
- $mailID : int
- ID настроек почтового ящика
- $Message : array<string|int, mixed>
- Массив данных письма. Выдает метод mailInfo()
- $messageid : string
- Почтовый ID письма вида <****@host>
- $Messages : array<string|int, mixed>
- - Массив писем, Выдает mailList(); - Массив полученных и пока не обработанных писем, Выдает mailGet(); - Передается в качестве массива для обработки в Метод mailGetWorker();
- $opts : mixed
- Различные параметры, в основном из GLOBALS
- $otherSettings : array<string|int, mixed>
- $params : array<string|int, mixed>
- Передача различных параметров
- $priority : int
- Приоритет сообщения 1 - Высокий 3 - Нормальный 5 - Низкий
- $rootpath : string
- Абсолютный путь
- $skey : mixed
- Различные параметры, в основном из GLOBALS
- $sqlname : mixed
- Различные параметры, в основном из GLOBALS
- $subject : string
- Параметры для отправки сообщений
- $tmzone : mixed
- Различные параметры, в основном из GLOBALS
- $to : array<string|int, mixed>
- Параметры для отправки сообщений
- $uids : array<string|int, mixed>
- Массив uid писем, которые надо загрузить
- $View : array<string|int, mixed>
- Массив для просмотра письма. Выдает метод mailView()
- __construct() : mixed
- Работает только с объектом Подключает необходимые файлы, задает первоначальные параметры Mailer constructor
- blackList() : array<string|int, mixed>
- Список e-mail(-ов), с которых запрещено принимать почту
- clearHtml() : string
- Очищает входящий HTML от говна, которое добавляют почтовые сервисы - стили, js и пр.
- clearInBody() : int
- Функция очистки изображений из папки inbody, которые отсутствуют в теле писем почтовика
- clearOldMessages() : bool
- Удаляет все письма с вложениями старше $day дней
- clearOtherMessages() : bool
- Удаляет все письма с вложениями ранее $day дней, которые не занесены в историю активностей
- deleteMsgByPeriod() : array<string|int, mixed>
- Функция удаления писем без следов, включая вложения
- getAttachmentFromEmail() : array<string|int, mixed>
- Загружает вложения конкретного письма по его uid
- getAttachments() : array<string|int, mixed>
- Загрузка всех вложений письма
- image2base64() : mixed
- Поиск вложенных изображений и конвертация в base64 Применяется в создании подписи
- mailAction() : string
- Выполнение различных действий с сообщением непосредственно по IMAP, т.е. на сервере
- mailActionPlus() : string
- Выполнение различных действий с письмами как на стороне CRM, так и на сервере
- mailEdit() : void
- Сохранение/редактирование сообщения
- mailGet() : void
- Получение сообщений
- mailGetWorker() : array<string|int, mixed>
- Обработка полученных методом mailGet писем
- mailInfo() : void
- Информация по сообщению
- mailList() : void
- Список писем (левая панель)
- mailListCard() : void
- Список ID сообщений для вывода в карточке Клиента/Контакта/Сделки
- mailListConversation() : void
- Вывод писем из Входящих и Исходящих
- mailSubmit() : array<string|int, mixed>
- Отправка сообщения
- mailView() : void
- вывод данных сообщения
- putHistory() : array<string|int, mixed>
- Добавление письма в историю
- readAll() : int
- Изменение статуса сообщений прочитанными
- searchEncode() : mixed
- Поиск кодировки в массиве заголовков
- zipAttachment() : void
- Архивация всех вложений письма и выдача в браузер для скачивания
- zipAttachmentFromEmail() : array<string|int, mixed>
- Загружает вложения конкретного письма по его uid
- decrypt() : string
- Расшифровка логина/пароля
- downloadAttachment() : void
- Загрузка вложений
- encodeToUtf8() : false|string
- Преобразование в кодировку UTF-8
- getBody() : bool|string
- Получение тела письма
- getMimeType() : string
- Получение MimeType по структуре письма
- getPart() : bool|string
- Получает нужную часть письма
- objectToArray() : mixed
- Преобразование объекта в массив, с учетом подмассивов, которые тоже могут быть объектами
Constants
CLIENTICON
Иконки клиента в зависимости от типа Юр.лицо/Физ.лицо
public
mixed
CLIENTICON
= ['client' => 'icon-commerical-building', 'person' => 'icon-user-1']
FOLDERICON
Иконки папок
public
mixed
FOLDERICON
= ['conversation' => '<i class="icon-chat-1 orange"></i>', 'inbox' => '<i class="icon-download-1 blue"></i>', 'outbox' => '<i class="icon-upload-1 broun"></i>', 'draft' => '<i class="icon-doc-text gray"></i>', 'trash' => '<i class="icon-trash gray"></i>', 'sended' => '<i class="icon-forward-1 green"></i>']
FOLDERNAME
FOLDERNAME. Имена папок
public
mixed
FOLDERNAME
= ['conversation' => 'Вся почта', 'inbox' => 'Входящее', 'outbox' => 'Исходящее', 'draft' => 'Черновик', 'trash' => 'Корзина', 'sended' => 'Отправлено']
PRIORITY
Названия приоритетов для отображения
public
mixed
PRIORITY
= [1 => '<i class="icon-flag-1 red"></i> Высокий', 3 => '<i class="icon-flag-1 blue"></i> Нормальный', 5 => '<i class="icon-flag-1 yelw"></i> Низкий']
PRIORITYICON
Иконки приоритетов
public
mixed
PRIORITYICON
= ['1' => '<i class="icon-flag-1 red" title="Высокий"></i>', '3' => '<i class="icon-flag-1 blue" title="Нормальный"></i>', '5' => '<i class="icon-flag-1 yelw" title="Низкий"></i>']
TEMPLATE
базовый шаблон сообщения
public
mixed
TEMPLATE
= '
<html lang="ru">
<head>
<title>{subject}</title>
<STYLE type="text/css">
<!--
body {
color:#222;
font-size: 14px;
line-height:18px;
font-family: arial, tahoma,serif;
background:#FFF;
margin:5px;
}
div{
padding:5px 0;
margin:0;
display:block;
}
p{
padding:2px 0;
}
hr{
width:102%;
border:0 none;
border-top: #ccc 1px dotted;
padding:0; height:1px;
margin:5px -5px;
clear:both;
}
a, a:visited, a:link{
color: #507192;
display:inline;
}
a:active, a:hover{
color:red;
}
blockquote{
border-left: 2px solid #507192;
padding-left: 20px;
background: #FAFAFA;
}
-->
</STYLE>
</head>
<body>
{html}
</body>
</html>
'
Properties
$attach
Параметры для отправки сообщений
public
array<string|int, mixed>
$attach
= []
$box
Проверяемая почта: INBOX|SEND
public
string
$box
= 'INBOX'
$boxSettings
public
mixed
$boxSettings
= []
$copy
Параметры для отправки сообщений
public
array<string|int, mixed>
$copy
= []
$days
Число дней проверки почты. Методы: mailGet(), mailGetWorker()
public
int
$days
= 7
$db
Различные параметры, в основном из GLOBALS
public
mixed
$db
$Error
Массив ошибок
public
array<string|int, mixed>
$Error
= []
$files
Параметры для отправки сообщений
public
array<string|int, mixed>
$files
= []
$fpath
Различные параметры, в основном из GLOBALS
public
mixed
$fpath
$from
Параметры для отправки сообщений
public
array<string|int, mixed>
$from
= []
$html
Параметры для отправки сообщений
public
string
$html
= ''
$id
ID сообщения
public
int
$id
= 0
$identity
Различные параметры, в основном из GLOBALS
public
mixed
$identity
$iduser
ID сотрудника, от которого идет отправка Применяется для загрузки настроек почты
public
mixed
$iduser
$iduser1
Различные параметры, в основном из GLOBALS
public
mixed
$iduser1
$ignoreExist
Нужно ли игнорировать существующие сообщения при проверке почты
public
bool
$ignoreExist
= false
$ivc
Различные параметры, в основном из GLOBALS
public
mixed
$ivc
$mailID
ID настроек почтового ящика
public
int
$mailID
= 0
$Message
Массив данных письма. Выдает метод mailInfo()
public
array<string|int, mixed>
$Message
= []
$messageid
Почтовый ID письма вида <****@host>
public
string
$messageid
= ''
$Messages
- Массив писем, Выдает mailList(); - Массив полученных и пока не обработанных писем, Выдает mailGet(); - Передается в качестве массива для обработки в Метод mailGetWorker();
public
array<string|int, mixed>
$Messages
= []
Tags
$opts
Различные параметры, в основном из GLOBALS
public
mixed
$opts
$otherSettings
public
array<string|int, mixed>
$otherSettings
= []
$params
Передача различных параметров
public
array<string|int, mixed>
$params
= []
$priority
Приоритет сообщения 1 - Высокий 3 - Нормальный 5 - Низкий
public
int
$priority
= 3
$rootpath
Абсолютный путь
public
string
$rootpath
$skey
Различные параметры, в основном из GLOBALS
public
mixed
$skey
$sqlname
Различные параметры, в основном из GLOBALS
public
mixed
$sqlname
$subject
Параметры для отправки сообщений
public
string
$subject
= ''
$tmzone
Различные параметры, в основном из GLOBALS
public
mixed
$tmzone
$to
Параметры для отправки сообщений
public
array<string|int, mixed>
$to
= []
$uids
Массив uid писем, которые надо загрузить
public
array<string|int, mixed>
$uids
= []
$View
Массив для просмотра письма. Выдает метод mailView()
public
array<string|int, mixed>
$View
= []
Methods
__construct()
Работает только с объектом Подключает необходимые файлы, задает первоначальные параметры Mailer constructor
public
__construct() : mixed
Return values
mixed —blackList()
Список e-mail(-ов), с которых запрещено принимать почту
public
static blackList() : array<string|int, mixed>
Return values
array<string|int, mixed> —$blacklist - возвращает список запрещенных e-mail для данного пользователя
clearHtml()
Очищает входящий HTML от говна, которое добавляют почтовые сервисы - стили, js и пр.
public
static clearHtml( $html) : string
Также производится проверка на наличие
Parameters
Return values
string —clearInBody()
Функция очистки изображений из папки inbody, которые отсутствуют в теле писем почтовика
public
static clearInBody() : int
Return values
int —clearOldMessages()
Удаляет все письма с вложениями старше $day дней
public
static clearOldMessages( $iduser[, int $day = 90 ]) : bool
Parameters
Return values
bool —clearOtherMessages()
Удаляет все письма с вложениями ранее $day дней, которые не занесены в историю активностей
public
static clearOtherMessages(int $iduser[, int $day = 10 ]) : bool
Parameters
- $iduser : int
- $day : int = 10
Return values
bool —deleteMsgByPeriod()
Функция удаления писем без следов, включая вложения
public
static deleteMsgByPeriod(int $iduser[, int $period = 5 ]) : array<string|int, mixed>
Parameters
- $iduser : int
-
- id сотрудника, письма которого удаляем
- $period : int = 5
-
- количество дней, за которое удаляем сообщения ( default = 5 )
Return values
array<string|int, mixed> —id - идентификатор письма text - сообщение с результатом
getAttachmentFromEmail()
Загружает вложения конкретного письма по его uid
public
static getAttachmentFromEmail( $uid, $mid[, int $file = [] | "" ]) : array<string|int, mixed>
Parameters
- $uid :
-
- uid сообщения
- $mid :
-
- id сообщения
- $file : int = [] | ""
-
- конкретный файл или все файлы, если не указано
Return values
array<string|int, mixed> —- int uid - uid письма
- array|string file системное имя
- string name оригинальное имя файла
getAttachments()
Загрузка всех вложений письма
public
static getAttachments(int $id[, array<string|int, mixed> $attachments = [] ]) : array<string|int, mixed>
Parameters
- $id : int
- $attachments : array<string|int, mixed> = []
Return values
array<string|int, mixed> —- str rezult = ok|error
- array attachments
- size - размер файла, кб
- icon - иконка формата
- fid - id файла, есзли загружен в систему
- folder - папка = ymail/, если не загружен в систему
- array error
image2base64()
Поиск вложенных изображений и конвертация в base64 Применяется в создании подписи
public
static image2base64( $html[, bool $resize = false ]) : mixed
Parameters
Tags
Return values
mixed —mailAction()
Выполнение различных действий с сообщением непосредственно по IMAP, т.е. на сервере
public
static mailAction(int $id[, string $action = '' ]) : string
Parameters
- $id : int
-
- id письма
- $action : string = ''
-
- действие: delete, seen, unseen
Return values
string —mailActionPlus()
Выполнение различных действий с письмами как на стороне CRM, так и на сервере
public
static mailActionPlus([array<string|int, mixed> $param = [] ]) : string
Parameters
- $param : array<string|int, mixed> = []
-
- int iduser - iduser для которого выполняются действия ( в т.ч. для загрузки настроек подключения к серверу )
- str tip - действие ( seen, delete, trash, untrash, multitrash, emptytrash, readall, multidelete, history )
- int id - id сообщения ( для seen, delete, trash, untrash, history )
- array multi - массив id писем ( для multitrash, emptytrash, multidelete )
Return values
string —mailEdit()
Сохранение/редактирование сообщения
public
mailEdit() : void
$mail = new Salesman\Mailer();
$mail -> subject = "Тест с отправкой";
$mail -> to = [
"email" => "a.vladislav.g@gmail.com",
"name" => "Владислав"
];
$mail -> html = "<h1>Привет, {client}</h1><div>Это успех!</div><div>{manager}</div>";
$mail -> mailEdit();
$mid = $mail -> id;
$error = $mail -> Error;
Return values
void —mailGet()
Получение сообщений
public
mailGet() : void
$mail = new Salesman\Mailer()
$mail -> params['ignoreattachments'] = 1 // игнорировать вложения ( для Сборщика заявок )
$mail -> params['deletemess'] = true // удалить письмо с сервера ( для Сборщика заявок )
$mail -> params['smtp'] = [] // передать собственные настройки соединения ( для Сборщика заявок )
$mail -> params['ignoreuids'] = [] // передать массив uid сообщений, которые следует игнорировать
$mail -> ignoreuids = [] // передать массив uid сообщений, которые следует игнорировать (альтернатива)
$mail -> iduser = 14 // id сотрудника ( не нужен, если задан mailID )
$mail -> uids = [] // передать массив uid сообщений, которые следует загружать (например для повторной загрузки)
$mail -> box = 'INBOX' // проверяемый ящик (INBOX, SEND)
$mail -> days = 1 // количество дней проверки ( по умолчанию = 7 )
$mail -> mailID = 2 // id настроек почтового ящика из таблицы *ymail_settings
$mail -> mailGet()
$email = $mail -> Messages
Return values
void —mailGetWorker()
Обработка полученных методом mailGet писем
public
mailGetWorker() : array<string|int, mixed>
Tags
Return values
array<string|int, mixed> — [
"result" => empty($err) ? "Получено $d писем <b>$mcount</b>" : "error",
"text" => empty($err) ? "Получено $d писем <b>$mcount</b>" : "Ошибка: ".implode("<br>", $err),
"mcount" => $mcount,
"last" => $last
]
$mail = new Salesman\Mailer();
$mail -> iduser = $iduser1;
$mail -> box = $box;
$mail -> mailGet();
$messages = $mail -> Messages;
$error = $mail -> Error;
$mail -> box = $box;
$mail -> Messages = $messages;
$mail -> iduser = $iduser1;
$rez = $mail -> mailGetWorker();
mailInfo()
Информация по сообщению
public
mailInfo() : void
$mail = new Salesman\Mailer();
$mail -> id = 27651;
$mail -> mailInfo();
$email = $mail -> Message;
Return values
void —mailList()
Список писем (левая панель)
public
mailList() : void
$list = new \Salesman\Mailer();
$list -> params = $params;
$list -> mailList();
$lists = $list -> Messages;
Return values
void —mailListCard()
Список ID сообщений для вывода в карточке Клиента/Контакта/Сделки
public
mailListCard() : void
Return values
void —mailListConversation()
Вывод писем из Входящих и Исходящих
public
mailListConversation() : void
Return values
void —mailSubmit()
Отправка сообщения
public
mailSubmit() : array<string|int, mixed>
- int $iduser - пользователь, от которого происходит отправка
- int $identity
- int $priority - приоритет сообщения
- string $subject - тема сообщения
- string $html - текст сообщения
- string|array $to - массив email получателей
- string|array $toname - массив имен получателей
- array $attach - массив вложений из папки ymail
- name => file
- array $files - массив вложений
- name => file
Tags
Return values
array<string|int, mixed> —- messageid
- error
- imaperror
mailView()
вывод данных сообщения
public
mailView() : void
$mail = new Salesman\Mailer();
$mail -> id = 27620;
$mail -> mailView();
$email = $mail -> View;
Return values
void —putHistory()
Добавление письма в историю
public
static putHistory( $id, int $iduser) : array<string|int, mixed>
Parameters
Tags
Return values
array<string|int, mixed> —readAll()
Изменение статуса сообщений прочитанными
public
static readAll([array<string|int, mixed> $params = [] ]) : int
Parameters
- $params : array<string|int, mixed> = []
-
int iduser - ограничение по сотруднику (иначе iduser1) int|array id - массив id сообщений или конкретный id
Return values
int —searchEncode()
Поиск кодировки в массиве заголовков
public
static searchEncode( $array) : mixed
Parameters
Return values
mixed —zipAttachment()
Архивация всех вложений письма и выдача в браузер для скачивания
public
static zipAttachment( $id) : void
Parameters
Return values
void —zipAttachmentFromEmail()
Загружает вложения конкретного письма по его uid
public
static zipAttachmentFromEmail( $uid[, string $file = "" ]) : array<string|int, mixed>
Parameters
Return values
array<string|int, mixed> —- uid
- file (системное имя)
- name (оригинальное имя файла)
decrypt()
Расшифровка логина/пароля
private
static decrypt( $text, $key, $iv) : string
Parameters
Return values
string —downloadAttachment()
Загрузка вложений
private
static downloadAttachment( $imap, $uid, $partNum, $encoding, $path, $filename) : void
Parameters
Return values
void —encodeToUtf8()
Преобразование в кодировку UTF-8
private
static encodeToUtf8( $string) : false|string
Parameters
Return values
false|string —getBody()
Получение тела письма
private
static getBody( $uid, $imap) : bool|string
Parameters
Return values
bool|string —getMimeType()
Получение MimeType по структуре письма
private
static getMimeType( $structure) : string
Parameters
Return values
string —getPart()
Получает нужную часть письма
private
static getPart( $imap, $uid, $mimetype[, $structure = NULL ][, $partNumber = NULL ]) : bool|string
Parameters
Return values
bool|string —objectToArray()
Преобразование объекта в массив, с учетом подмассивов, которые тоже могут быть объектами
private
static objectToArray( $object) : mixed