Skip to content

Commit 445caa0

Browse files
committed
AC-10269: Gift registry frontend enhancements
* Code refinements
1 parent a5fc2b7 commit 445caa0

File tree

1 file changed

+28
-43
lines changed

1 file changed

+28
-43
lines changed

lib/internal/Magento/Framework/Mail/EmailMessage.php

Lines changed: 28 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,6 @@
2222
*/
2323
class EmailMessage extends Message implements EmailMessageInterface
2424
{
25-
/**
26-
* @var array.
27-
*/
28-
private const ARRAY_RCE_CHARACTERS = [
29-
',',
30-
';',
31-
'=22'
32-
];
33-
3425
/**
3526
* @var MimeMessageInterfaceFactory
3627
*/
@@ -89,7 +80,7 @@ public function __construct(
8980
if ($sender) {
9081
$this->zendMessage->setSender(
9182
$this->sanitiseEmail($sender->getEmail()),
92-
$this->sanitiseName($sender->getName())
83+
$sender->getName()
9384
);
9485
}
9586
if (count($to) < 1) {
@@ -187,8 +178,8 @@ public function getSender(): ?Address
187178
}
188179
return $this->addressFactory->create(
189180
[
190-
'email' => $this->sanitiseEmail($laminasSender->getEmail()),
191-
'name' => $this->sanitiseName($laminasSender->getName())
181+
'email' => $laminasSender->getEmail(),
182+
'name' => $laminasSender->getName()
192183
]
193184
);
194185
}
@@ -233,7 +224,7 @@ private function convertAddressListToAddressArray(AddressList $addressList): arr
233224
$this->addressFactory->create(
234225
[
235226
'email' => $this->sanitiseEmail($address->getEmail()),
236-
'name' => $this->sanitiseName($address->getName())
227+
'name' => $address->getName()
237228
]
238229
);
239230
}
@@ -255,7 +246,7 @@ private function convertAddressArrayToAddressList(array $arrayList): AddressList
255246
try {
256247
$laminasAddressList->add(
257248
$this->sanitiseEmail($address->getEmail()),
258-
$this->sanitiseName($address->getName())
249+
$address->getName()
259250
);
260251
} catch (LaminasInvalidArgumentException $e) {
261252
$this->logger->warning(
@@ -278,44 +269,38 @@ private function convertAddressArrayToAddressList(array $arrayList): AddressList
278269
private function sanitiseEmail(?string $email): ?string
279270
{
280271
if (!empty($email) && str_starts_with($email, '=?')) {
281-
$decodedValue = iconv_mime_decode($email, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8');
282-
if ($this->isEncoded($email, $decodedValue)) {
283-
$email = strtolower(str_replace('=22', '', $email));
284-
}
272+
return null;
273+
//$decodedValue = iconv_mime_decode($email, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8');
274+
// To avoid special characters inside email
275+
// if ($this->validateSpecialCharacters($email)) {
276+
// $email = null;
277+
// }
285278
}
286279

287280
return $email;
288281
}
289282

290-
/**
291-
* Sanitise sender name
292-
*
293-
* @param ?string $name
294-
* @return ?string
295-
*/
296-
private function sanitiseName(?string $name): ?string
297-
{
298-
if (!empty($name)) {
299-
return trim(str_replace(
300-
self::ARRAY_RCE_CHARACTERS,
301-
'',
302-
$name
303-
));
304-
}
305-
306-
return $name;
307-
}
283+
// /**
284+
// * Check email is encoded
285+
// *
286+
// * @param string $originalEmail
287+
// * @param string $decodedEmail
288+
// * @return bool
289+
// */
290+
// private function isEncoded(string $originalEmail, string $decodedEmail): bool
291+
// {
292+
// return str_starts_with($originalEmail, '=?')
293+
// && strlen($originalEmail) !== strlen($decodedEmail);
294+
// }
308295

309296
/**
310-
* Check email is encoded
297+
* Check email contains invalid characters
311298
*
312-
* @param string $originalEmail
313-
* @param string $decodedEmail
314-
* @return bool
299+
* @param string $email
300+
* @return int
315301
*/
316-
private function isEncoded(string $originalEmail, string $decodedEmail): bool
302+
private function validateSpecialCharacters(string $email): int
317303
{
318-
return str_starts_with($originalEmail, '=?')
319-
&& strlen($originalEmail) !== strlen($decodedEmail);
304+
return preg_match('/^=?.*[#!&%~]+.*$/', $email);
320305
}
321306
}

0 commit comments

Comments
 (0)