22
22
*/
23
23
class EmailMessage extends Message implements EmailMessageInterface
24
24
{
25
- /**
26
- * @var array.
27
- */
28
- private const ARRAY_RCE_CHARACTERS = [
29
- ', ' ,
30
- '; ' ,
31
- '=22 '
32
- ];
33
-
34
25
/**
35
26
* @var MimeMessageInterfaceFactory
36
27
*/
@@ -89,7 +80,7 @@ public function __construct(
89
80
if ($ sender ) {
90
81
$ this ->zendMessage ->setSender (
91
82
$ this ->sanitiseEmail ($ sender ->getEmail ()),
92
- $ this -> sanitiseName ( $ sender ->getName () )
83
+ $ sender ->getName ()
93
84
);
94
85
}
95
86
if (count ($ to ) < 1 ) {
@@ -187,8 +178,8 @@ public function getSender(): ?Address
187
178
}
188
179
return $ this ->addressFactory ->create (
189
180
[
190
- 'email ' => $ this -> sanitiseEmail ( $ laminasSender ->getEmail () ),
191
- 'name ' => $ this -> sanitiseName ( $ laminasSender ->getName () )
181
+ 'email ' => $ laminasSender ->getEmail (),
182
+ 'name ' => $ laminasSender ->getName ()
192
183
]
193
184
);
194
185
}
@@ -233,7 +224,7 @@ private function convertAddressListToAddressArray(AddressList $addressList): arr
233
224
$ this ->addressFactory ->create (
234
225
[
235
226
'email ' => $ this ->sanitiseEmail ($ address ->getEmail ()),
236
- 'name ' => $ this -> sanitiseName ( $ address ->getName () )
227
+ 'name ' => $ address ->getName ()
237
228
]
238
229
);
239
230
}
@@ -255,7 +246,7 @@ private function convertAddressArrayToAddressList(array $arrayList): AddressList
255
246
try {
256
247
$ laminasAddressList ->add (
257
248
$ this ->sanitiseEmail ($ address ->getEmail ()),
258
- $ this -> sanitiseName ( $ address ->getName () )
249
+ $ address ->getName ()
259
250
);
260
251
} catch (LaminasInvalidArgumentException $ e ) {
261
252
$ this ->logger ->warning (
@@ -278,44 +269,38 @@ private function convertAddressArrayToAddressList(array $arrayList): AddressList
278
269
private function sanitiseEmail (?string $ email ): ?string
279
270
{
280
271
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
+ // }
285
278
}
286
279
287
280
return $ email ;
288
281
}
289
282
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
+ // }
308
295
309
296
/**
310
- * Check email is encoded
297
+ * Check email contains invalid characters
311
298
*
312
- * @param string $originalEmail
313
- * @param string $decodedEmail
314
- * @return bool
299
+ * @param string $email
300
+ * @return int
315
301
*/
316
- private function isEncoded (string $ originalEmail , string $ decodedEmail ): bool
302
+ private function validateSpecialCharacters (string $ email ): int
317
303
{
318
- return str_starts_with ($ originalEmail , '=? ' )
319
- && strlen ($ originalEmail ) !== strlen ($ decodedEmail );
304
+ return preg_match ('/^=?.*[#!&%~]+.*$/ ' , $ email );
320
305
}
321
306
}
0 commit comments