From 505e6e2a0d32738934570d56c72182c16c065736 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 6 Aug 2024 12:50:24 +0200 Subject: [PATCH] Improve RFC 2822 date parser due to PHP createFromFormat() shortcomings https://github.com/the-djmaze/snappymail/issues/1694#issuecomment-2270983942 --- .../v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php b/snappymail/v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php index 4e234482b..09a626a99 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php @@ -42,7 +42,9 @@ abstract class DateTimeHelper } $sDateTime = \trim(\preg_replace('/ \([a-zA-Z0-9]+\)$/', '', $sDateTime)); - $oDateTime = \DateTime::createFromFormat(\DateTime::RFC2822, $sDateTime, static::GetUtcTimeZoneObject()); + $sDateTime = \preg_replace('/ ([0-9]+:[0-9]+) /', ' $1:00 ', $sDateTime); + $oDateTime = \DateTime::createFromFormat(\DateTime::RFC2822, $sDateTime, static::GetUtcTimeZoneObject()) + ?: \DateTime::createFromFormat('d M Y H:i:s O', $sDateTime, static::GetUtcTimeZoneObject()); // 398045302 is 1982-08-13 00:08:22 the date RFC 822 was created if (!$oDateTime || 398045302 > $oDateTime->getTimestamp()) { \SnappyMail\Log::notice('', "Failed to parse RFC 2822 date '{$sDateTime}'");