1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
sender.php
См. документацию.
1<?php
2
3namespace Bitrix\Main\Controller\Mail;
4
5use Bitrix\Main\Engine\Controller;
6use Bitrix\Main\Engine\CurrentUser;
7use Bitrix\Main\Localization\Loc;
8use Bitrix\Main\Mail;
9use Bitrix\Main;
10use Bitrix\Main\Error;
11
12class Sender extends Controller
13{
14 public function getSenderDataAction(int $senderId): ?array
15 {
16 $sender = \Bitrix\Main\Mail\Internal\SenderTable::getById($senderId)->fetch();
17
18 if (!$sender)
19 {
20 return null;
21 }
22
23 $smtp = $sender['OPTIONS']['smtp'] ?? [];
24
25 if (!empty($smtp))
26 {
27 $response['smtp'] = [
28 'server' => $smtp['server'] ?? null,
29 'port' => $smtp['port'] ?? null,
30 'protocol' => $smtp['protocol'] ?? null,
31 'login' => $smtp['login'] ?? null,
32 'limit' => $smtp['limit'] ?? null,
33 ];
34 }
35
36 return array_merge(
37 $response['smtp'] ?? [],
38 [
39 'email' => $sender['EMAIL'],
40 'name' => !empty($sender['NAME']) ? $sender['NAME'] : Mail\Sender\UserSenderDataProvider::getUserFormattedName((int)$sender['USER_ID']),
41 'isPublic' => (int)$sender['IS_PUBLIC'] === 1,
42 ]
43 );
44 }
45
47 {
48 return Main\Mail\Sender::prepareUserMailboxes();
49 }
50
51 public function getSenderTransitionalDataAction(int $senderId): ?array
52 {
54 }
55
56 public function getSenderByMailboxIdAction(int $mailboxId, bool $getSenderWithoutSmtp = false): ?array
57 {
58 return Mail\Sender\UserSenderDataProvider::getSenderNameByMailboxId($mailboxId, $getSenderWithoutSmtp);
59 }
60
61 public function getDefaultSenderNameAction(): string
62 {
64 }
65
67 {
68 $name = trim((string)($data['name'] ?? ''));
69 $public = $data['public'] === 'Y';
70 $userId = (int)CurrentUser::get()->getId();
71
72 $email = mb_strtolower(trim((string)($data['email'] ?? '')));
73 if (!check_email($email, true))
74 {
75 $errorCode = empty($email) ? 'MAIN_CONTROLLER_MAIL_SENDER_EMPTY_EMAIL' : 'MAIN_CONTROLLER_MAIL_SENDER_INVALID_EMAIL';
76 $this->addError(new Error(Loc::getMessage($errorCode), 'ERR_INVALID_EMAIL'));
77
78 return null;
79 }
80
81 $senderId = (int)($data['id'] ?? null);
82 if (!$senderId && Mail\Sender::hasUserSenderWithEmail($email))
83 {
84 $this->addError(new Error(Loc::getMessage('MAIN_CONTROLLER_MAIL_SENDER_EXISTS_SENDER'), 'ERR_EXISTS_SENDER'));
85
86 return null;
87 }
88
89 $smtp = $data['smtp'] ?? [];
90
91 if ($senderId)
92 {
93 $checkResult = Main\Mail\Sender::canEditSender($senderId);
94 if (!$checkResult->isSuccess())
95 {
96 $this->addErrors($checkResult->getErrors());
97
98 return null;
99 }
100
101 $sender = Mail\Internal\SenderTable::getById($senderId)->fetch();
102 $userId = (int)$sender['USER_ID'];
103 if (!empty($smtp) && empty($smtp['password']) && $sender['OPTIONS']['smtp'])
104 {
105 $smtp['password'] = $sender['OPTIONS']['smtp']['password'];
106 }
107 }
108
109 if (!empty($smtp))
110 {
111 if (!is_array($smtp))
112 {
113 $this->addError(new Error(Loc::getMessage('MAIN_CONTROLLER_MAIL_SENDER_AJAX_ERROR'), 'ERR_EMAIL'));
114
115 return null;
116 }
117
118 $result = Mail\Sender::prepareSmtpConfigForSender($smtp);
119
120 if (!$result->isSuccess())
121 {
122 $error = $result->getErrors()[0];
123 $this->addError(new Error($error->getMessage(), 'ERR_SMTP_CONFIG'));
124
125 return null;
126 }
127 }
128
129 $fields = [
130 'NAME' => $name,
131 'EMAIL' => $email,
132 'USER_ID' => $userId,
133 'IS_CONFIRMED' => true,
134 'IS_PUBLIC' => $public,
135 'OPTIONS' => [],
136 ];
137
138 if (!empty($smtp))
139 {
140 $fields['OPTIONS']['smtp'] = $smtp;
141 }
142
143 if (!$senderId)
144 {
146
147 if (!empty($result['error']))
148 {
149 $this->addError($result['error']);
150
151 return null;
152 }
153
154 if (!empty($result['errors']))
155 {
156 $this->addError($result['errors'][0]);
157
158 return null;
159 }
160
161 $senderId = $result['senderId'] ?? null;
162 }
163 else
164 {
165 $updateResult = Mail\Internal\SenderTable::update($senderId, $fields);
166
167 if(!$updateResult->isSuccess())
168 {
169 $this->addError($updateResult->getErrors()[0]);
170
171 return null;
172 }
173 }
174
175 if ($smtp && $smtp['limit'] !== null)
176 {
177 Main\Mail\Sender::setEmailLimit($email, $smtp['limit']);
178 }
179 elseif ($smtp && !isset($smtp['limit']))
180 {
181 Main\Mail\Sender::removeEmailLimit($email);
182 }
183
184 return [
185 'senderId' => $senderId ?? null,
187 ];
188 }
189
193 public function addAliasAction(string $name, string $email): ?array
194 {
195 $userId = (int)CurrentUser::get()->getId();
196
197 if (!$userId)
198 {
199 return null;
200 }
201
202 if (!Main\Mail\Sender::hasUserAvailableSmtpSenderByEmail($email, $userId))
203 {
204 return null;
205 }
206
208 'NAME' => $name,
209 'EMAIL' => $email,
210 'IS_CONFIRMED' => true,
211 'USER_ID' => $userId,
212 ]);
213
214 if (!empty($result['error']))
215 {
216 $this->addError(new Error($result['error'], 'ERR_ADD_SENDER'));
217
218 return null;
219 }
220
222 $result['avatar'] = $userData['userAvatar'] ?? null;
223 $result['userUrl'] = $userData['userUrl'] ?? null;
224
225 return $result;
226 }
227
228 public function deleteSenderAction(int $senderId): void
229 {
230 $checkResult = Main\Mail\Sender::canEditSender($senderId);
231 if (!$checkResult->isSuccess())
232 {
233 $this->addErrors($checkResult->getErrors());
234
235 return;
236 }
237
238 Main\Mail\Sender::delete([$senderId]);
239 }
240
241 public function updateSenderNameAction(int $senderId, string $name): void
242 {
243 $result = Main\Mail\Sender::updateSender($senderId, ['NAME' => $name]);
244 if (!$result->isSuccess())
245 {
246 $this->addErrors($result->getErrors());
247 }
248 }
249}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
add($name, $value)
Определения configuration.php:141
deleteSenderAction(int $senderId)
Определения sender.php:228
addAliasAction(string $name, string $email)
Определения sender.php:193
getSenderByMailboxIdAction(int $mailboxId, bool $getSenderWithoutSmtp=false)
Определения sender.php:56
getSenderTransitionalDataAction(int $senderId)
Определения sender.php:51
getSenderDataAction(int $senderId)
Определения sender.php:14
getDefaultSenderNameAction()
Определения sender.php:61
getAvailableSendersAction()
Определения sender.php:46
submitSenderAction(array $data)
Определения sender.php:66
updateSenderNameAction(int $senderId, string $name)
Определения sender.php:241
addError(Error $error)
Определения controller.php:1070
addErrors(array $errors)
Определения controller.php:1083
Определения error.php:15
static getSenderNameByMailboxId(int $mailboxId, bool $getSenderWithoutSmtp=false)
Определения usersenderdataprovider.php:475
static getSenderTransitionalData(int $senderId)
Определения usersenderdataprovider.php:358
static getUserFormattedName(?int $userId=null)
Определения usersenderdataprovider.php:435
static getById($id)
Определения datamanager.php:364
static update($primary, array $data)
Определения datamanager.php:1256
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$public
Определения backup.php:109
check_email($email, $strict=false, $domainCheck=false)
Определения tools.php:4571
$name
Определения menu_edit.php:35
Определения address.php:8
$email
Определения payment.php:49
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$response
Определения result.php:21
$error
Определения subscription_card_product.php:20
$fields
Определения yandex_run.php:501