iobroker.imap 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023-2024 Lucky-ESA <github@luckyskills.de>
3
+ Copyright (c) 2023-2026 Lucky-ESA <github@luckyskills.de>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -30,9 +30,9 @@
30
30
 
31
31
  ## Requirements
32
32
 
33
- - Node 18 or 20
34
- - JS-Controller >= 5.0.19
35
- - Admin >= 6.13.16
33
+ - Node 22 or 24
34
+ - JS-Controller >= 7.0.7
35
+ - Admin >= 7.8.23
36
36
  - ~150 MB free ram
37
37
 
38
38
  ## Tested with
@@ -41,7 +41,7 @@
41
41
  - gmail [app-password](https://support.google.com/mail/answer/185833?hl=de)
42
42
  - vodafone
43
43
  - strato
44
- - outlook (e. g. [outlook 2Factor authentication](https://mcuiobroker.gitbook.io/jarvis-infos/tipps/allgemein/microsoft-windows/2-fach-authentifizierung))
44
+ - outlook (e. g. [OAuth 2.0 authorization](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=certificate))
45
45
 
46
46
  ## Description
47
47
 
@@ -58,6 +58,15 @@
58
58
  -->
59
59
 
60
60
  ## Changelog
61
+
62
+ ### 0.4.0 (2026-05-30)
63
+
64
+ - (copilot) Adapter requires node.js >= 22 now
65
+ - (Lucky-ESA) Description revised
66
+ - (Lucky-ESA) Admin 7.8.23 required
67
+ - (Lucky-ESA) JS-Controller 7.0.7 required
68
+ - (Lucky-ESA) Added meta object for attachments
69
+
61
70
  ### 0.3.0 (2024-12-07)
62
71
 
63
72
  - (Lucky-ESA) Mailbox folder delete added
@@ -83,87 +92,13 @@
83
92
  - (Lucky-ESA) JS-Controller >= 5.0.19 required
84
93
  - (Lucky-ESA) Admin >=6.13.16 required
85
94
 
86
- ### 0.1.3 (2024-03-06)
87
-
88
- - (Lucky-ESA) Fixed setFlag
89
- - (Lucky-ESA) Fixed sendTo error during instance deletion ([#57](https://github.com/Lucky-ESA/ioBroker.imap/issues/57))
90
- - (Lucky-ESA) Mass email shift intercepted
91
-
92
- ### 0.1.2 (2024-01-24)
93
-
94
- - (Lucky-ESA) Added missing translate
95
- - (Lucky-ESA) Updated package
96
- - (Lucky-ESA) Bug fixes
97
-
98
- ### 0.1.1 (2023-09-11)
99
-
100
- - (Lucky-ESA) Delete wrong error parse message
101
-
102
- ### 0.1.0 (2023-09-06)
103
-
104
- - (Lucky-ESA) Added RAM consumption - Instance Settings
105
- - (Lucky-ESA) Added german documention
106
- - (Lucky-ESA) Added Mailparser options
107
- - (Lucky-ESA) Added counter history
108
- - (Lucky-ESA) Bug fixes
109
-
110
- ### 0.0.9 (2023-07-26)
111
-
112
- - (Lucky-ESA) Fixed RAM consumption of new emails
113
- - (Lucky-ESA) Added counter attachments in JSON
114
-
115
- ### 0.0.8 (2023-07-13)
116
-
117
- - (Lucky-ESA) Fix refresh crash
118
- - (Lucky-ESA) Added MB threshold
119
-
120
- ### 0.0.7 (2023-04-25)
121
-
122
- - (Lucky-ESA) Fix correct counter for seen and unseen
123
- - (Lucky-ESA) Added capabilities
124
- - (Lucky-ESA) Criteria change without restart
125
- - (Lucky-ESA) Added outlook.office365.com oauth2 login
126
- - (Lucky-ESA) Added Connection.js from Module to Adapter
127
- - (Lucky-ESA) Bug fixes
128
-
129
- ### 0.0.6 (2023-03-17)
130
-
131
- - (Lucky-ESA) Added trigger move or copy emails
132
- - (Lucky-ESA) Added JSON for multiple IMAP accounts
133
- - (Lucky-ESA) Bug fixes
134
-
135
- ### 0.0.5 (2023-03-15)
136
-
137
- - (Lucky-ESA) Added: Limited reconnected (5 max)
138
- - (Lucky-ESA) Added: into datapoints
139
- - (Lucky-ESA) Added: Password entry not possible without an active instance
140
- - (Lucky-ESA) Added: Added description to readme
141
- - (Lucky-ESA) Added: Added move or copy
142
- - (Lucky-ESA) Added: Set flag with datapoints
143
- - (Lucky-ESA) Fix: debug output without attachments
144
- - (Lucky-ESA) Fix: wrong json_table
145
- - (Lucky-ESA) Fix: value null
146
- - (Lucky-ESA) Change: Reconnected change info level to debug level
147
- - (Lucky-ESA) Change: correct dp roles
148
- - (Lucky-ESA) Change: delete attachments (too much RAM usage)
149
-
150
- ### 0.0.4 (2023-03-03)
151
-
152
- - (Lucky-ESA) Fix json_table
153
-
154
- ### 0.0.3 (2023-03-03)
155
-
156
- - (Lucky-ESA) Beta release
157
-
158
- ### 0.0.2 (2023-03-03)
159
-
160
- - (Lucky-ESA) initial release
95
+ [Older changelogs can be found there](CHANGELOG_OLD.md)
161
96
 
162
97
  ## License
163
98
 
164
99
  MIT License
165
100
 
166
- Copyright (c) 2023-2024 Lucky-ESA <github@luckyskills.de>
101
+ Copyright (c) 2023-2026 Lucky-ESA <github@luckyskills.de>
167
102
 
168
103
  Permission is hereby granted, free of charge, to any person obtaining a copy
169
104
  of this software and associated documentation files (the "Software"), to deal
@@ -14,7 +14,7 @@
14
14
  "MAX": "Wie viele E-Mails sollen als Datenpunkte angelegt werden?",
15
15
  "max_html": "max. HTML",
16
16
  "MAX_HTML": "Wie viele E-Mails sollen als HTML erstellt werden?",
17
- "token": "Zeichen",
17
+ "token": "Token",
18
18
  "TOKEN": "Token für die xoauth2-Anmeldung",
19
19
  "tls": "TLS",
20
20
  "TLS": "TLS aktivieren",
@@ -39,11 +39,11 @@
39
39
  "UNFLAGGED": "ungekennzeichnet",
40
40
  "UNSEEN": "ungesehen",
41
41
  "inbox": "Posteingang",
42
- "INBOX": "Wählen Sie Posteingang",
42
+ "INBOX": "Posteingang asuwählen",
43
43
  "Tab icons": "Symbole erstellen",
44
44
  "Info icons": "Ordnersymbol hochladen.",
45
45
  "iconname": "Symbolname",
46
- "ICONNAME": "Name des Symbols (z. B. Google Mail)",
46
+ "ICONNAME": "Name des Symbols (z. B. Google Mail)",
47
47
  "Tab Hosts": "IMAPs erstellen",
48
48
  "icon64": "Symbol auswählen",
49
49
  "ICON64": "Symbol auswählen",
@@ -51,7 +51,7 @@
51
51
  "TLS_OPTION": "Options-Objekt, das an tls.connect() übergeben werden soll",
52
52
  "auto_tls": "Auto-TLS",
53
53
  "AUTO_TLS": "Auf „immer“ setzen, um immer Verbindungs-Upgrades über STARTTLS zu versuchen, „erforderlich“, nur wenn ein Upgrade erforderlich ist, oder „nie“, um nie ein Upgrade zu versuchen.",
54
- "Tab oauth": "Autorisieren Sie oauth2",
54
+ "Tab oauth": "Oauth2 Autorisierung",
55
55
  "Tab oauth2": "Login-oauth2-Daten",
56
56
  "provider": "Anbieter",
57
57
  "PROVIDER": "Anbieter",
@@ -71,22 +71,22 @@
71
71
  "selection": "Auswahl",
72
72
  "TELEGRAM": "Senden",
73
73
  "RESTART": "Neu starten",
74
- "DATAPOINT": "Datenpunkt",
74
+ "DATAPOINT": "Objekt-ID",
75
75
  "telegram_tooltip": "Instanz (Mehrere durch Komma trennen - z. B. Telegramm.0, Telegramm.1)",
76
76
  "Tab Nodemailer": "Mailparser-Optionen",
77
77
  "Info Nodemailer": "Mailparser-Optionen",
78
78
  "node_option": "Mail-Option",
79
79
  "node_option_tt": "Mailparser-Optionen",
80
80
  "skipHtmlToText": "HTML in Text überspringen",
81
- "skipHtmlToText_tt": "Generieren Sie keinen Klartext aus HTML",
81
+ "skipHtmlToText_tt": "Keinen Klartext aus HTML generieren",
82
82
  "maxHtmlLengthToParse": "Maximale HTML-Länge zum Parsen",
83
83
  "maxHtmlLengthToParse_tt": "Die maximale Menge an zu analysierendem HTML in Bytes",
84
84
  "skipImageLinks": "Bildlinks überspringen",
85
- "skipImageLinks_tt": "Überspringen Sie die Konvertierung von CID-Anhängen in Daten-URL-Bilder",
85
+ "skipImageLinks_tt": "Die Konvertierung von CID-Anhängen in Daten-URL-Bilder überspringen",
86
86
  "skipTextToHtml": "Text in HTML überspringen",
87
- "skipTextToHtml_tt": "Generieren Sie kein HTML aus Klartextnachrichten",
87
+ "skipTextToHtml_tt": "Kein HTML aus Klartextnachrichten generieren",
88
88
  "skipTextLinks": "Textlinks überspringen",
89
- "skipTextLinks_tt": "Verlinken Sie keine Links in Klartextinhalten",
89
+ "skipTextLinks_tt": "Keine Links in Klartextinhalten verlinken",
90
90
  "nodename": "Name",
91
91
  "NODENAME": "Name vom Mailparser"
92
92
  }
@@ -71,7 +71,7 @@
71
71
  "selection": "Selection",
72
72
  "TELEGRAM": "Send",
73
73
  "RESTART": "Restart",
74
- "DATAPOINT": "Datapoint",
74
+ "DATAPOINT": "Object-ID",
75
75
  "telegram_tooltip": "Instance (separate multiples with a comma - e.g. telegram.0, telegram.1)",
76
76
  "Tab Nodemailer": "Mailparser options",
77
77
  "Info Nodemailer": "Mailparser options",
@@ -389,7 +389,7 @@
389
389
  "type": "image",
390
390
  "attr": "picture",
391
391
  "tooltip": "UPLOAD",
392
- "accept": "image/*",
392
+ "accept": { "image/**": [] },
393
393
  "base64": true,
394
394
  "crop": true
395
395
  }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "imap",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "news": {
6
+ "0.4.0": {
7
+ "en": "Adapter requires node.js >= 22 now\nDescription revised\nAdmin 7.8.23 required\nJS-Controller 7.0.7 required\nAdded meta object for attachments",
8
+ "de": "Adapter benötigt node.js >= 22 jetzt\nBeschreibung überarbeitet\nAdmin 7.8.23 erforderlich\nJS-Controller 7.0.7 erforderlich\nMeta-Objekt für Anhänge hinzugefügt",
9
+ "ru": "Адаптер требует node.js >= 22 сейчас\nПересмотренное описание\nТребуется администратор 7.8.23\nТребуется JS-контроллер 7.0.7\nДобавлен мета-объект для вложений",
10
+ "pt": "Adaptador requer nod.js >= 22 agora\nDescrição revista\nAdministração 7.8.23 necessária\nJS-Controller 7.0.7 requerido\nAdicionado meta- objeto para anexos",
11
+ "nl": "Voor de adapter zijn node.js < 22 nu nodig\nOmschrijving herzien\nBeheerder 7.8.23 vereist\nJS-Controller 7.0. vereist\nMeta-object toegevoegd voor bijlagen",
12
+ "fr": "Adaptateur nécessite node.js >= 22 maintenant\nDescription révisée\nAdmin 7.8.23 requis\nJS-Contrôleur 7.0.7 requis\nAjout d'un objet méta pour les pièces jointes",
13
+ "it": "Adattatore richiede node.js >= 22 ora\nDesignazione delle merci\nAdmin 7.8.23 richiesto\nJS-Controller 7.0.7 richiesto\nAggiunto meta oggetto per allegati",
14
+ "es": "Adaptador requiere node.js ю= 22 ahora\nDescripción revisada\nAdmin 7.8.23 requerido\nJS-Controller 7.0.7 required\nAñadido meta objeto para apegos",
15
+ "pl": "Adapter wymaga node.js > = 22\nOpis zmieniony\nWymagany admin 7.8.23\nWymagany kontroler JS- 7.0.7\nDodano obiekt meta dla załączników",
16
+ "uk": "Адаптер вимагає node.js >= 22 тепер\nОпис переглянуті\nАдміністратор 7.8.23 потрібно\nJS-Controller 7.0.7 потрібно\nДодано об'єкт мета для вкладення",
17
+ "zh-cn": "适配器需要节点.js 现在22\n订正说明\n所需行政费7.8.23\n联合来文主计长\n为附件添加元对象"
18
+ },
6
19
  "0.3.0": {
7
20
  "en": "Mailbox folder delete added\nMailbox folder create added\nChange Mailbox Folder name added\nIMAP package changed\nMigration to ESLint9",
8
21
  "de": "Mailbox Ordner löschen hinzugefügt\nMailbox Ordner erstellen hinzugefügt\nMailbox ändern Ordnername hinzugefügt\nIMAP Paket geändert\nMigration auf ESLint9",
@@ -80,19 +93,6 @@
80
93
  "pl": "Dodano brak tłumaczenia\nAktualizacja pakietu\nPoprawki błędów",
81
94
  "uk": "Додати відсутній переклад\nОновлений пакет\nВиправлення помилок",
82
95
  "zh-cn": "缺少翻译\n更新软件包\n错误修正"
83
- },
84
- "0.1.1": {
85
- "en": "Delete wrong error parse message",
86
- "de": "Falsche Fehlermeldung löschen",
87
- "ru": "Удалить неправильная ошибка parse сообщение",
88
- "pt": "Excluir mensagem de análise de erro errada",
89
- "nl": "Verwijder de verkeerde foute boodschap",
90
- "fr": "Supprimer le message erroné",
91
- "it": "Cancella messaggio di parse errore sbagliato",
92
- "es": "Eliminar el mensaje de error incorrecto",
93
- "pl": "Delete error pars",
94
- "uk": "Видалити неправильне повідомлення про помилку",
95
- "zh-cn": "删除错误的信息稀少"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -161,12 +161,12 @@
161
161
  },
162
162
  "dependencies": [
163
163
  {
164
- "js-controller": ">=5.0.19"
164
+ "js-controller": ">=7.0.7"
165
165
  }
166
166
  ],
167
167
  "globalDependencies": [
168
168
  {
169
- "admin": ">=6.13.16"
169
+ "admin": ">=7.6.17"
170
170
  }
171
171
  ]
172
172
  },
@@ -183,15 +183,36 @@
183
183
  "max_mb_last_restart": 0
184
184
  },
185
185
  "encryptedNative": [
186
- "password",
187
- "secureid"
186
+ "hosts.password",
187
+ "oauth_token.secureid"
188
188
  ],
189
189
  "protectedNative": [
190
- "password",
191
- "secureid"
190
+ "hosts.password",
191
+ "oauth_token.secureid"
192
192
  ],
193
193
  "objects": [],
194
194
  "instanceObjects": [
195
+ {
196
+ "_id": "",
197
+ "type": "meta",
198
+ "common": {
199
+ "name": {
200
+ "en": "Meta storage for user files",
201
+ "de": "Meta-Speicher für Benutzerdateien",
202
+ "ru": "Meta Storage для файлов пользователей",
203
+ "pt": "Meta de armazenamento para arquivos de usuário",
204
+ "nl": "Meta opslag voor gebruikersbestanden",
205
+ "fr": "Stockage Meta pour les fichiers utilisateur",
206
+ "it": "Meta storage per i file utente",
207
+ "es": "Meta almacenamiento para archivos de usuario",
208
+ "pl": "Meta storage for user files",
209
+ "uk": "Зберігання мета для файлів користувачів",
210
+ "zh-cn": "用户档案的储存"
211
+ },
212
+ "type": "meta.user"
213
+ },
214
+ "native": {}
215
+ },
195
216
  {
196
217
  "_id": "info",
197
218
  "type": "channel",
package/lib/helper.js CHANGED
@@ -451,7 +451,7 @@ module.exports = {
451
451
  role: "button",
452
452
  name: this.helper_translator("Apply selection"),
453
453
  desc: "Create by Adapter",
454
- read: true,
454
+ read: false,
455
455
  write: true,
456
456
  def: false,
457
457
  };
@@ -491,7 +491,7 @@ module.exports = {
491
491
  role: "button",
492
492
  name: this.helper_translator("Apply selection"),
493
493
  desc: "Create by Adapter",
494
- read: true,
494
+ read: false,
495
495
  write: true,
496
496
  def: false,
497
497
  };
@@ -501,7 +501,7 @@ module.exports = {
501
501
  role: "button",
502
502
  name: this.helper_translator("Apply selection"),
503
503
  desc: "Create by Adapter",
504
- read: true,
504
+ read: false,
505
505
  write: true,
506
506
  def: false,
507
507
  };
@@ -531,7 +531,7 @@ module.exports = {
531
531
  role: "button",
532
532
  name: this.helper_translator("Start new search"),
533
533
  desc: "Create by Adapter",
534
- read: true,
534
+ read: false,
535
535
  write: true,
536
536
  def: false,
537
537
  };
@@ -541,7 +541,7 @@ module.exports = {
541
541
  role: "button",
542
542
  name: this.helper_translator("Reload emails"),
543
543
  desc: "Create by Adapter",
544
- read: true,
544
+ read: false,
545
545
  write: true,
546
546
  def: false,
547
547
  };
@@ -551,7 +551,7 @@ module.exports = {
551
551
  role: "button",
552
552
  name: this.helper_translator("Apply html changes"),
553
553
  desc: "Create by Adapter",
554
- read: true,
554
+ read: false,
555
555
  write: true,
556
556
  def: false,
557
557
  };
package/lib/imap_event.js CHANGED
@@ -33,7 +33,7 @@ module.exports = {
33
33
  val: JSON.stringify(mailbox),
34
34
  ack: true,
35
35
  });
36
- await this.loadAllSeqno(client, "INBOX");
36
+ await this.loadAllSeqno(client, "INBOX", false);
37
37
  if (this.clients[client].serverSupports("SORT")) {
38
38
  this.readMailsSort(client);
39
39
  } else {
@@ -342,6 +342,7 @@ module.exports = {
342
342
  this.clientsRaw[client].onExpunge = 0;
343
343
  this.clientsRaw[client].isonExpunge = false;
344
344
  }, 1000);
345
+ this.updateTotal(client, this.clientsRaw[client].inbox_activ);
345
346
  },
346
347
  /**
347
348
  * Event if UIDs in this mailbox have changed since the last time this mailbox was opened.
@@ -709,6 +710,24 @@ module.exports = {
709
710
  this.log_translator("info", "No Update", seqno, client, JSON.stringify(info));
710
711
  }
711
712
  this.setTotal(client, this.clientsRaw[client].inbox_activ);
713
+ this.updateTotal(client, this.clientsRaw[client].inbox_activ);
714
+ },
715
+ /**
716
+ * Update eMails total
717
+ *
718
+ * @param {string} client device id
719
+ * @param {string} folder actual inbox
720
+ */
721
+ async updateTotal(client, folder) {
722
+ this.totalTimeout[client] && this.clearTimeout(this.totalTimeout[client]);
723
+ this.totalTimeout[client] = null;
724
+ this.totalTimeout[client] = this.setTimeout(async () => {
725
+ const all_mail = await this.loadAllSeqno(client, folder, true);
726
+ await this.setState(`${client}.total`, {
727
+ val: typeof all_mail === "object" ? all_mail.length : 0,
728
+ ack: true,
729
+ });
730
+ }, 5 * 1000);
712
731
  },
713
732
  /**
714
733
  * @param {object} attrs
@@ -933,7 +952,7 @@ module.exports = {
933
952
  },
934
953
  /**
935
954
  * @param {string} client device id
936
- * @param {any} folder
955
+ * @param {string} folder Folder Name
937
956
  */
938
957
  changeFolder(client, folder) {
939
958
  if (folder == this.clientsRaw[client].inbox_activ) {
@@ -955,7 +974,7 @@ module.exports = {
955
974
  val: JSON.stringify(mailbox),
956
975
  ack: true,
957
976
  });
958
- await this.loadAllSeqno(client, this.clientsRaw[client].inbox_activ);
977
+ await this.loadAllSeqno(client, this.clientsRaw[client].inbox_activ, false);
959
978
  if (this.clients[client].serverSupports("SORT")) {
960
979
  this.readMailsSort(client);
961
980
  } else {
@@ -978,7 +997,7 @@ module.exports = {
978
997
  val: JSON.stringify(mailbox),
979
998
  ack: true,
980
999
  });
981
- await this.loadAllSeqno(client, this.clientsRaw[client].inbox_activ);
1000
+ await this.loadAllSeqno(client, this.clientsRaw[client].inbox_activ, false);
982
1001
  if (this.clients[client].serverSupports("SORT")) {
983
1002
  this.readMailsSort(client);
984
1003
  } else {
package/lib/translator.js CHANGED
@@ -78,17 +78,17 @@ exports.trans = {
78
78
  "zh-cn": "Change common %s",
79
79
  },
80
80
  Datapoint: {
81
- en: "Datapoint: %s",
82
- de: "Datapoint: %s",
83
- ru: "Datapoint: %s",
84
- pt: "Datapoint: %s",
85
- nl: "Datapoint: %s",
86
- fr: "Datapoint: %s",
87
- it: "Datapoint: %s",
88
- es: "Datapoint: %s",
89
- pl: "Datapoint: %s",
90
- uk: "Призначення: %s",
91
- "zh-cn": "数据点: %s",
81
+ en: "Object: %s",
82
+ de: "Gegenstand: %s",
83
+ ru: "Объект: %s",
84
+ pt: "Objeto: %s",
85
+ nl: "Doel: %s",
86
+ fr: "Objet: %s",
87
+ it: "Oggetto: %s",
88
+ es: "Objeto: %s",
89
+ pl: "Obiekt: %s",
90
+ uk: "Об'єкт: %s",
91
+ "zh-cn": "对象: %s",
92
92
  },
93
93
  "Reload emails": {
94
94
  en: "Reload emails (e.g. after HTML changes)",
@@ -156,17 +156,17 @@ exports.trans = {
156
156
  "zh-cn": "未发现: %s",
157
157
  },
158
158
  qualitiy: {
159
- en: "Datapoints Quality",
160
- de: "Datenpunkte Qualität",
161
- ru: "Качество точек данных",
162
- pt: "Qualidade dos Datapoints",
163
- nl: "Quality",
164
- fr: "Datapoints Qualité",
165
- it: "Qualità dei datapoint",
166
- es: "Datapoints Quality",
167
- pl: "Jakość danych",
168
- uk: "Якість точок даних",
169
- "zh-cn": "数据点 质量",
159
+ en: "Quality of object states",
160
+ de: "Qualität der Objektzustände",
161
+ ru: "Качество состояния объектов",
162
+ pt: "Qualidade dos estados de objeto",
163
+ nl: "Kwaliteit van object staat",
164
+ fr: "Qualité des états d'objet",
165
+ it: "Qualità degli stati degli oggetti",
166
+ es: "Calidad de los estados objeto",
167
+ pl: "Jakość stanów obiektów",
168
+ uk: "Якість об'єктів",
169
+ "zh-cn": "物体状态的质量",
170
170
  },
171
171
  "Data point quality is cleaned up": {
172
172
  en: "Data point quality is cleaned up.",
@@ -2457,17 +2457,17 @@ exports.trans = {
2457
2457
  "zh-cn": "当前信息",
2458
2458
  },
2459
2459
  INBOXFOLDER: {
2460
- en: "Create datapoint (change_folder) for %s.",
2461
- de: "Datapoint (change_folder) für %s erstellen.",
2462
- ru: "Создать данные (change_folder) для %s.",
2463
- pt: "Criar datapoint (change_folder) para %s.",
2464
- nl: "Creëer datapoint (change_folder) voor %s.",
2465
- fr: "Créer un point de données (change_folder) pour %s.",
2466
- it: "Creare datapoint (change_folder) per %s.",
2467
- es: "Crear punto de datos (change_folder) para %s.",
2468
- pl: "Źródło danych (change_folder) dla %s.",
2469
- uk: "Створення точки даних (change_folder) для %s.",
2470
- "zh-cn": "A. 为%s人设立数据点(change_folder)。.",
2460
+ en: "Create object (change_folder) for %s.",
2461
+ de: "Objekt (change_folder) für %s erstellen.",
2462
+ ru: "Создать объект (изменение_складка) для %s.",
2463
+ pt: "Criar objeto (change_folder) para %s.",
2464
+ nl: "Maak object (change_folder) aan voor %s.",
2465
+ fr: "Créer un objet (change_folder) pour %s.",
2466
+ it: "Crea oggetto (change_folder) per %s.",
2467
+ es: "Crear objeto (change_folder) para %s.",
2468
+ pl: "Utwórz obiekt (zmień _ folder) dla %s .",
2469
+ uk: "Створити об'єкт (change_folder) на %s.",
2470
+ "zh-cn": "为 %s 创建对象(更改_文件夹).",
2471
2471
  },
2472
2472
  "Status eMail folder": {
2473
2473
  en: "Status eMail folder",
package/main.js CHANGED
@@ -11,7 +11,7 @@ const utils = require("@iobroker/adapter-core");
11
11
  // Load your modules here, e.g.:
12
12
  const helper = require("./lib/helper");
13
13
  const tl = require("./lib/translator");
14
- const format = require("util").format;
14
+ const format = require("node:util").format;
15
15
  const { convert } = require("html-to-text");
16
16
  const imap_connect = require("imap-iobroker");
17
17
  const imap_event = require("./lib/imap_event");
@@ -66,7 +66,6 @@ class Imap extends utils.Adapter {
66
66
  this.findmail_wo_att = imap_event.findmail_wo_att;
67
67
  this.loadAllSeqno = imap_event.loadAllSeqno;
68
68
  this.setTotal = imap_event.setTotal;
69
- this.newMailsSort = imap_event.newMailsSort;
70
69
  this.newMails = imap_event.newMails;
71
70
  this.readMails = imap_event.readMails;
72
71
  this.diffArray = imap_event.diffArray;
@@ -83,8 +82,10 @@ class Imap extends utils.Adapter {
83
82
  this.startReadMails = imap_event.startReadMails;
84
83
  this.readAllMails = imap_event.readAllMails;
85
84
  this.updateattachments = imap_event.updateattachments;
85
+ this.updateTotal = imap_event.updateTotal;
86
86
  this.qualityInterval = null;
87
87
  this.statusInterval = null;
88
+ this.totalTimeout = {};
88
89
  this.sleepTimer = null;
89
90
  this.double_call = {};
90
91
  this.boxfolder = {};
@@ -235,6 +236,7 @@ class Imap extends utils.Adapter {
235
236
  this.clientsRows[dev.user] = "";
236
237
  selectbox.states[dev.user] = dev.user;
237
238
  this.clients[dev.user] = null;
239
+ this.totalTimeout[dev.user] = null;
238
240
  this.clientsRaw[dev.user] = dev;
239
241
  this.all_seqno[dev.user] = [];
240
242
  this.reconnect_count[dev.user] = 0;
@@ -1193,6 +1195,7 @@ class Imap extends utils.Adapter {
1193
1195
  this.clientsRaw[dev].onExpungeTimer && this.clearTimeout(this.clientsRaw[dev].onExpungeTimer);
1194
1196
  this.clients[dev] = null;
1195
1197
  this.restartIMAPConnection[dev] && this.clearTimeout(this.restartIMAPConnection[dev]);
1198
+ this.totalTimeout[dev] && this.clearTimeout(this.totalTimeout[dev]);
1196
1199
  this.setState(`${dev}.online`, {
1197
1200
  val: false,
1198
1201
  ack: true,
@@ -1366,7 +1369,7 @@ class Imap extends utils.Adapter {
1366
1369
  this.setAckFlag(id, { val: false });
1367
1370
  return;
1368
1371
  }
1369
- if (command === "change_folder" && state.val != "") {
1372
+ if (command === "change_folder" && typeof state.val === "string" && state.val != "") {
1370
1373
  if (this.clients[clientID]) {
1371
1374
  this.changeFolder(clientID, state.val);
1372
1375
  this.clientsRaw[clientID].inbox_activ = state.val;
@@ -1914,7 +1917,7 @@ class Imap extends utils.Adapter {
1914
1917
  }
1915
1918
 
1916
1919
  /**
1917
- * Datapoint qualitiy clean up
1920
+ * Object qualitiy clean up
1918
1921
  */
1919
1922
  async cleanupQuality() {
1920
1923
  this.log_translator("debug", "Data point quality is cleaned up");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.imap",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "imap to receive your emails",
5
5
  "author": {
6
6
  "name": "Lucky-ESA",
@@ -20,38 +20,26 @@
20
20
  "url": "git@github.com:Lucky-ESA/ioBroker.imap.git"
21
21
  },
22
22
  "engines": {
23
- "node": ">= 18"
23
+ "node": ">= 22"
24
24
  },
25
25
  "dependencies": {
26
- "@azure/msal-node": "^2.16.2",
27
- "@iobroker/adapter-core": "^3.2.2",
26
+ "@azure/msal-node": "^3.8.4",
27
+ "@iobroker/adapter-core": "^3.3.2",
28
28
  "imap-iobroker": "^0.1.1",
29
- "mailparser": "^3.7.1"
29
+ "mailparser": "^3.9.8"
30
30
  },
31
31
  "devDependencies": {
32
- "@alcalzone/release-script": "^3.8.0",
33
- "@alcalzone/release-script-plugin-iobroker": "^3.7.2",
34
- "@alcalzone/release-script-plugin-license": "^3.7.0",
35
- "@alcalzone/release-script-plugin-manual-review": "^3.7.0",
36
- "@iobroker/adapter-dev": "^1.3.0",
37
- "@iobroker/eslint-config": "^1.0.0",
38
- "@iobroker/testing": "^5.0.0",
39
- "@tsconfig/node18": "^18.2.4",
40
- "@types/chai": "^4.3.20",
41
- "@types/chai-as-promised": "^8.0.1",
42
- "@types/imap": "^0.8.42",
43
- "@types/mocha": "^10.0.10",
44
- "@types/node": "^22.9.0",
45
- "@types/proxyquire": "^1.3.31",
46
- "@types/sinon": "^17.0.3",
47
- "@types/sinon-chai": "^3.2.12",
48
- "chai": "^4.5.0",
49
- "chai-as-promised": "^8.0.0",
50
- "mocha": "^10.8.2",
51
- "proxyquire": "^2.1.3",
52
- "sinon": "^19.0.2",
53
- "sinon-chai": "^3.7.0",
54
- "typescript": "~5.6.2"
32
+ "@alcalzone/release-script": "^5.2.0",
33
+ "@alcalzone/release-script-plugin-iobroker": "^5.2.0",
34
+ "@alcalzone/release-script-plugin-license": "^5.2.0",
35
+ "@alcalzone/release-script-plugin-manual-review": "^5.2.0",
36
+ "@iobroker/adapter-dev": "^1.5.0",
37
+ "@iobroker/eslint-config": "^2.3.4",
38
+ "@iobroker/testing": "^5.2.2",
39
+ "@tsconfig/node22": "^22.0.5",
40
+ "@types/imap": "^0.8.43",
41
+ "@types/node": "^22.13.14",
42
+ "typescript": "~6.0.3"
55
43
  },
56
44
  "main": "main.js",
57
45
  "files": [
@@ -69,7 +57,7 @@
69
57
  "test:integration": "mocha test/integration --exit",
70
58
  "test": "npm run test:js && npm run test:package",
71
59
  "check": "tsc --noEmit -p tsconfig.check.json",
72
- "lint": "eslint .",
60
+ "lint": "eslint -c eslint.config.mjs .",
73
61
  "translate": "translate-adapter",
74
62
  "release": "release-script",
75
63
  "release-patch": "release-script patch --yes",