2222 */
2323class 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