Merge branch 'the-djmaze:master' into master

This commit is contained in:
Philipp Mundhenk 2026-05-17 09:47:52 +02:00 committed by GitHub
commit ed35c8e91e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 82 additions and 70 deletions

View file

@ -82,7 +82,7 @@
border-left: 3px solid transparent;
color: var(--folders-color, #333);
display: block;
line-height: 34px;
line-height: 2.2em;
padding: 0 2em 0 @folderItemPadding;
position: relative;
text-decoration: none;
@ -151,7 +151,7 @@
color: var(--unread-count-color, #fff);
font-size: 80%;
line-height: 1.5em;
margin-top: 7px;
margin-top: 0.5em;
min-width: 1.7em;
padding: 1px 4px;
text-align: center;

View file

@ -63,8 +63,9 @@ There, click on the link to go to the SnappyMail admin panel.
<lib>uuid</lib>
<lib>xxtea</lib>
<lib>zip</lib>
<nextcloud min-version="20" max-version="34" />
-->
<nextcloud min-version="20" max-version="32" />
<nextcloud min-version="20" />
</dependencies>
<settings>
<admin>OCA\SnappyMail\Settings\AdminSettings</admin>

View file

@ -54,11 +54,22 @@ abstract class DateTimeHelper
\DateTime::createFromFormat('d M Y H:i:s O', $sDateTime, static::GetUtcTimeZoneObject())
// Using T (obsolete timezone abbreviation)
?: \DateTime::createFromFormat('d M Y H:i:s T', $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}'");
try {
$timestamp = $oDateTime->getTimestamp();
// 398045302 is 1982-08-13 00:08:22, the date RFC 822 was created
if (398045302 > $timestamp) {
\SnappyMail\Log::notice('', "Failed to parse RFC 2822 date '{$sDateTime}'");
return 0;
}
return $timestamp;
} catch (\Throwable $error) {
// Catch integer overflow or other fatal errors
\SnappyMail\Log::notice('', "Failed to parse RFC 2822 date '{$sDateTime}'. {$error->getMessage()}");
return 0;
}
return $oDateTime ? $oDateTime->getTimestamp() : 0;
}
/**

View file

@ -59,7 +59,7 @@ abstract class Utils
return 'iso-8859-8';
}
return \preg_replace('/^(cp-?|windows?)(12[\d])/', 'windows-$1', $sEncoding);
return \preg_replace('/^(cp|windows)-?(12[\d]*)/i', 'windows-$2', $sEncoding);
}
public static function NormalizeCharsetByValue(string $sCharset, string $sValue) : string

View file

@ -247,7 +247,7 @@
"DISCARD_UNSAVED_DATA": "Abandonner les données non enregistrées ?",
"ATTACH_FILES": "Joindre des fichiers",
"ATTACH_DROP_FILES_DESC": "Glisser les fichiers ici",
"REPLY_MESSAGE_TITLE": "%DATETIME% %EMAIL% a écrit",
"REPLY_MESSAGE_TITLE": "%DATETIME% %EMAIL% a écrit ",
"FORWARD_MESSAGE_TOP_TITLE": "-------- Message transféré -------",
"FORWARD_MESSAGE_TOP_SENT": "Envoyé",
"EMPTY_TO_ERROR_DESC": "Merci de spécifier au moins un destinataire",

View file

@ -31,7 +31,7 @@
"SAVE": "Сохранить",
"SAVE_CHANGES": "Сохранить изменения?",
"SEARCH": "Поиск",
"SPAM": "В спам",
"SPAM": "Спам",
"SUBJECT": "Тема",
"TEST": "Тест",
"TO": "Кому",
@ -60,12 +60,12 @@
"UNSEEN": "Непрочитанные",
"DATE": "Дата",
"DATE_ALL": "За всё время",
"BEFORE_3_DAYS": "Older then 3 days",
"BEFORE_7_DAYS": "Older then 1 week",
"BEFORE_MONTH": "Older then 1 month",
"BEFORE_3_MONTHS": "Older then 3 months",
"BEFORE_6_MONTHS": "Older then 6 months",
"BEFORE_YEAR": "Older then 1 year",
"BEFORE_3_DAYS": "Старше 3 дней",
"BEFORE_7_DAYS": "Старше недели",
"BEFORE_MONTH": "Старше месяца",
"BEFORE_3_MONTHS": "Старше 3 месяцев",
"BEFORE_6_MONTHS": "Старше полугода",
"BEFORE_YEAR": "Старше года",
"SINCE_3_DAYS": "За три дня",
"SINCE_7_DAYS": "За неделю",
"SINCE_MONTH": "За месяц",
@ -130,8 +130,8 @@
"QUOTA_SIZE": "Использовано <strong>%SIZE% (%PROC%%)<\/strong> из <strong>%LIMIT%<\/strong>",
"SORT": "Сортировка",
"NO_SORT": "Почтовый сервер не поддерживает сортировку",
"SORT_ARRIVAL_ASC": "Arrived ascending",
"SORT_ARRIVAL_DESC": "Arrived descending",
"SORT_ARRIVAL_ASC": "Получено (по возрастанию)",
"SORT_ARRIVAL_DESC": "Получено (по убыванию)",
"SORT_DATE_ASC": "Дата по возрастанию",
"SORT_DATE_DESC": "Дата по убыванию",
"SORT_SIZE_ASC": "Размер по возрастанию",
@ -160,7 +160,7 @@
"MENU_VIEW_ORIGINAL": "Просмотреть оригинал",
"HTML_VIEW": "Просмотр сообщения в HTML",
"PLAIN_VIEW": "Просмотр простого текстового сообщения",
"SWAP_COLORS": "Swap default (background)color",
"SWAP_COLORS": "Переключить цвет фона по умолчанию",
"MENU_DOWNLOAD_ORIGINAL": "Скачать как .eml файл",
"MENU_FILTER_SIMILAR": "Фильтровать похожие",
"MENU_PRINT": "Распечатать",
@ -176,8 +176,8 @@
"HAS_VIRUS_WARNING": "ВНИМАНИЕ: Обнаружен вирус!",
"TAGS": "Метки",
"NEW_TAG": "Новая метка",
"ENABLE_TRACKING_LINKS": "Enable tracking links",
"TRACKING_ENABLED": "Links are now tracked when clicked!"
"ENABLE_TRACKING_LINKS": "Включить отслеживание ссылок",
"TRACKING_ENABLED": "Теперь клики по ссылкам отслеживаются!"
},
"MESSAGE_TAGS": {
"$important": "Важное",
@ -303,13 +303,13 @@
"VERIFY": "Проверить",
"GOOD_SIGNATURE": "Подтвержденная сигнатура для %USER%",
"ERROR": "%TYPE% ошибка: %ERROR%",
"CREATE_SELF_SIGNED": "Create self-signed",
"VALID_UNTIL": "Valid until",
"PRIVATE_KEY": "Private key",
"CHANGE_PASS": "Change passphrase",
"CURRENT_PASS": "Current passphrase",
"NEW_PASS": "New passphrase",
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login passphrase to decrypt data"
"CREATE_SELF_SIGNED": "Создать самоподписанный",
"VALID_UNTIL": "Действителен до",
"PRIVATE_KEY": "Закрытый ключ (PK)",
"CHANGE_PASS": "Изменить парольную фразу",
"CURRENT_PASS": "Текущая парольная фраза",
"NEW_PASS": "Новая парольная фраза",
"ASK_CRYPTKEY_PASS": "Ваша парольная фраза была изменена. Введите вашу старую фразу для расшифровки данных"
},
"OPENPGP": {
"POPUP_IMPORT_TITLE": "Импорт OpenPGP ключа",
@ -321,20 +321,20 @@
"LABEL_KEY_TYPE": "Тип",
"SIGNED_MESSAGE": "OpenPGP подписанное сообщение",
"ENCRYPTED_MESSAGE": "OpenPGP шифрованное сообщение",
"STORE_IN_GNUPG": "Хранить на сервере в GnuPG",
"STORE_PUBLIC_KEY_IN_GNUPG": "Store public key on server in GnuPG",
"STORE_PRIVATE_KEY_IN_GNUPG": "Store private key on server in GnuPG",
"STORE_IN_GNUPG": "Хранение на сервере в GnuPG",
"STORE_PUBLIC_KEY_IN_GNUPG": "Хранение открытого ключа на сервере в GnuPG",
"STORE_PRIVATE_KEY_IN_GNUPG": "Хранение закрытого ключа на сервере в GnuPG",
"BACKUP_ON_SERVER": "Хранить (с шифрованием) на сервере",
"BACKUP_PUBLIC_KEY_ON_SERVER": "Backup public key on server",
"BACKUP_PRIVATE_KEY_ON_SERVER": "Backup private key on server"
"BACKUP_PUBLIC_KEY_ON_SERVER": "Хранить открытый ключ на сервере",
"BACKUP_PRIVATE_KEY_ON_SERVER": "Хранить закрытый ключ на сервере"
},
"SMIME": {
"POPUP_IMPORT_TITLE": "Import S\/MIME certificate",
"CERTIFICATE": "Certificate",
"CERTIFICATES": "S\/MIME Certificates",
"POPUP_IMPORT_TITLE": "Импорт сертификата S\/MIME",
"CERTIFICATE": "Сертификат",
"CERTIFICATES": "Сертификаты S\/MIME",
"SIGNED_MESSAGE": "S\/MIME подписанное сообщение",
"ENCRYPTED_MESSAGE": "S\/MIME шифрованное сообщение",
"PRIVATE_KEY_OF": "S\/MIME private key of %EMAIL%"
"PRIVATE_KEY_OF": "S\/MIME приватный ключ для %EMAIL%"
},
"POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Создать фильтр",
@ -409,31 +409,31 @@
"EDITOR": {
"PLAIN": "HTML <-> TEXT",
"SOURCE": "HTML <-> SOURCE",
"FONTFAMILY": "Font family",
"FONTSIZE": "Font size",
"DIR": "Text direction",
"DIR_LTR": "Left to right",
"DIR_RTL": "Right to left",
"DIR_AUTO": "Automatic",
"TEXTCOLOR": "Text color",
"BACKGROUNDCOLOR": "Background color",
"BOLD": "Bold",
"ITALIC": "Italic",
"UNDERLINE": "Underline",
"STRIKE": "Strikethrough",
"SUB": "Subscript",
"SUP": "Superscript",
"OL": "Ordered list",
"UL": "Unordered list",
"QUOTE": "Blockquote",
"INDENTDECREASE": "Decrease indent",
"INDENTINCREASE": "Increase indent",
"LINK": "Link",
"IMAGEURL": "Image URL",
"IMAGEUPLOAD": "Image select",
"UNDO": "Undo",
"REDO": "Redo",
"REMOVESTYLE": "Remove style"
"FONTFAMILY": "Шрифт",
"FONTSIZE": "Размер шрифта",
"DIR": "Направление текста",
"DIR_LTR": "Слева направо",
"DIR_RTL": "Справа налево",
"DIR_AUTO": "Автоматически",
"TEXTCOLOR": "Цвет текста",
"BACKGROUNDCOLOR": "Цвет фона",
"BOLD": "Жирный",
"ITALIC": "Курсив",
"UNDERLINE": "Подчеркнутый",
"STRIKE": "Зачеркнутый",
"SUB": "Подстрочный индекс",
"SUP": "Надстрочный индекс",
"OL": "Упорядоченный список",
"UL": "Неупорядоченный список",
"QUOTE": "Блок-цитата",
"INDENTDECREASE": "Уменьшить отступ",
"INDENTINCREASE": "Увеличить отступ",
"LINK": "Ссылка",
"IMAGEURL": "URL-адрес изображения",
"IMAGEUPLOAD": "Выбрать на устройстве",
"UNDO": "Отменить",
"REDO": "Повторить",
"REMOVESTYLE": "Очистить стиль"
},
"SETTINGS_LABELS": {
"GENERAL": "Основные",
@ -457,7 +457,7 @@
"SETTINGS_SECURITY": {
"LEGEND_SECURITY": "Безопасность",
"LABEL_AUTOLOGOUT": "Автоматический выход",
"FORGET_KEY_PASS": "Forget private key passphrase",
"FORGET_KEY_PASS": "Забыть парольную фразу закрытого ключа",
"NEVER": "Никогда"
},
"SETTINGS_GENERAL": {
@ -477,7 +477,7 @@
"HIDE_DELETED_MESSAGES": "Скрыть сообщения, помеченные для удаления",
"USE_CHECKBOXES_IN_LIST": "Показывать чекбоксы в списках",
"USE_THREADS": "Сворачивать письма в переписках",
"THREAD_ALGORITHM": "Threads algorithm",
"THREAD_ALGORITHM": "Группировка по беседам",
"REPLY_SAME_FOLDER": "Помещать ответы в ту же папку, где находится оригинал",
"PREFER_HTML": "Предпочитать HTML обычному тексту",
"PREFER_HTML_INFO": "Сообщения иногда приходят в обоих форматах. Этот параметр определяет, хотите ли вы, чтобы отображалась HTML-часть или обычный текст.",
@ -503,9 +503,9 @@
"IMAGES_OPTION_WHITELIST": "Белый список или спрашивать",
"IMAGES_OPTION_ALWAYS": "Показать всегда",
"IMAGES_WHITELIST": "Форматы из белого списка",
"MESSAGE_POPUP_WINDOW": "Popup in new window instead of tab",
"MAILTO": "Register as 'mailto:' links handler",
"HTML_TO_MD": "Convert HTML to Markdown instead of plain text"
"MESSAGE_POPUP_WINDOW": "Всплывающее окно в новом окне вместо вкладки",
"MAILTO": "Установить в качестве обработчика ссылок 'mailto:' по умолчанию",
"HTML_TO_MD": "Преобразование HTML в Markdown вместо обычного текста"
},
"SETTINGS_CONTACTS": {
"LABEL_CONTACTS_AUTOSAVE": "Автоматически добавлять получателей писем в адресную книгу",
@ -562,7 +562,7 @@
"SETTINGS_OPENPGP": {
"BUTTON_IMPORT_KEY": "Импортировать ключ",
"BUTTON_GENERATE_KEY_PAIR": "Новый ключ",
"IMPORT_FROM_SERVER": "Import from server",
"IMPORT_FROM_SERVER": "Импортировать с сервера",
"TITLE_PRIVATE": "Приватный",
"TITLE_PUBLIC": "Публичный",
"GET_MAILVELOPE": "Получить дополнение для браузера Mailvelope."
@ -614,7 +614,7 @@
"DomainAlreadyExists": "Домен уже существует",
"DomainNotAllowed": "Данный домен не разрешен",
"AccountNotAllowed": "Данный аккаунт не разрешен",
"CryptKeyError": "Your login passphrase has changed",
"CryptKeyError": "Ваша парольная фраза была изменена",
"ContactsSyncError": "Ошибка синхронизации контактов",
"CantGetMessageList": "Не могу получить список писем",
"CantGetMessage": "Не могу получить письмо",

View file

@ -31,7 +31,7 @@
"SAVE": "Зберегти",
"SAVE_CHANGES": "Зберегти зміни?",
"SEARCH": "Пошук",
"SPAM": "В спам",
"SPAM": "Спам",
"SUBJECT": "Тема",
"TEST": "Тест",
"TO": "Кому",