@@ -559,9 +559,29 @@ public function process() {
559559 if (array_key_exists ('folder_label ' , $ this ->request ->get )) {
560560 $ folder = $ this ->request ->get ['folder_label ' ];
561561 $ this ->out ('folder_label ' , $ folder );
562+ } else {
563+ $ folder = hex2bin ($ parts [2 ]);
562564 }
565+
563566 $ mailbox = Hm_IMAP_List::get_mailbox_without_connection ($ details );
564567 $ label = $ mailbox ->get_folder_name ($ folder );
568+ if (!$ label ) {
569+ if ($ this ->config ->get ('allow_session_cache ' , false )) {
570+ $ paths = explode ("_ " , $ path );
571+ $ short_path = $ paths [0 ] . "_ " . $ paths [1 ] . "_ " ;
572+ $ cached_folders = $ this ->cache ->get ('imap_folders_ ' .$ short_path , true );
573+ $ label = !empty ($ cached_folders [$ folder ]['name ' ]) ? $ cached_folders [$ folder ]['name ' ] : '' ;
574+ } else {
575+ Hm_Msgs::add ('Folder name loaded directly from the server. This may be slower. Enable session caching for better performance. ' , 'warning ' );
576+ if (isset ($ details ['type ' ]) && $ details ['type ' ] === 'ews ' ) {
577+ $ connected_mailbox = Hm_IMAP_List::get_connected_mailbox ($ parts [1 ], $ this ->cache );
578+ if ($ connected_mailbox && $ connected_mailbox ->authed ()) {
579+ $ folder_status = $ connected_mailbox ->get_folder_status ($ folder , false );
580+ $ label = $ folder_status ['name ' ] ?? null ;
581+ }
582+ }
583+ }
584+ }
565585 $ title = array (strtoupper ($ details ['type ' ] ?? 'IMAP ' ), $ details ['name ' ], $ label );
566586 if ($ this ->get ('list_page ' , 0 )) {
567587 $ title [] = sprintf ('Page %d ' , $ this ->get ('list_page ' , 0 ));
@@ -932,7 +952,7 @@ public function process() {
932952 }
933953
934954 $ mailbox = Hm_IMAP_List::get_connected_mailbox ($ form ['imap_server_id ' ], $ this ->cache );
935- if ($ mailbox && ! $ mailbox ->is_imap () && empty ( $ archive_folder ) ) {
955+ if ($ mailbox && ! $ mailbox ->is_imap ()) {
936956 // EWS supports archiving to user archive folders
937957 $ status = $ mailbox ->message_action ($ form_folder , 'ARCHIVE ' , array ($ form ['imap_msg_uid ' ]))['status ' ];
938958 } else {
@@ -1588,6 +1608,7 @@ public function process() {
15881608 ];
15891609 $ this ->user_config ->set ('special_imap_folders ' , $ specials );
15901610 }
1611+ Hm_Msgs::add ("EWS server saved. To preserve these settings after logout, please go to <a class='alert-link' href='/?page=save'>Save Settings</a>. " );
15911612 $ this ->session ->record_unsaved ('EWS server added ' );
15921613 $ this ->session ->secure_cookie ($ this ->request , 'hm_reload_folders ' , '1 ' );
15931614 }
@@ -1992,6 +2013,7 @@ public function process() {
19922013
19932014 $ mailbox = Hm_IMAP_List::get_connected_mailbox ($ server_id , $ this ->cache );
19942015 if ($ mailbox && $ mailbox ->authed ()) {
2016+ $ prefetch = true ;
19952017 $ mailbox ->set_read_only ($ prefetch );
19962018 $ part = false ;
19972019 list ($ msg_struct , $ msg_struct_current , $ msg_text , $ part ) = $ mailbox ->get_structured_message (hex2bin ($ folder ), $ uid , $ part , $ this ->user_config ->get ('text_only_setting ' , false ));
0 commit comments