@@ -671,7 +671,7 @@ public function copy($folder) {
671
671
672
672
/**
673
673
* Move the current Messages to a mailbox
674
- * @param $folder
674
+ * @param string $folder_path
675
675
* @param boolean $expunge
676
676
*
677
677
* @return Message|null
@@ -683,17 +683,32 @@ public function copy($folder) {
683
683
* @throws MessageHeaderFetchingException
684
684
* @throws Exceptions\EventNotFoundException
685
685
*/
686
- public function move ($ folder , $ expunge = false ) {
687
- $ message = $ this ->copy ($ folder );
688
- if ($ message !== null ) {
689
- $ this ->delete ($ expunge );
686
+ public function move ($ folder_path , $ expunge = false ) {
687
+ $ this ->client ->openFolder ($ folder_path );
688
+ $ status = $ this ->client ->getConnection ()->examineFolder ($ folder_path );
690
689
691
- $ event = $ this ->getEvent ("message " , "moved " );
692
- $ event ::dispatch ($ this , $ message );
693
- }
690
+ if (isset ($ status ["uidnext " ])) {
691
+ $ next_uid = $ status ["uidnext " ];
692
+
693
+ /** @var Folder $folder */
694
+ $ folder = $ this ->client ->getFolder ($ folder_path );
695
+
696
+ $ this ->client ->openFolder ($ this ->folder_path );
697
+ if ($ this ->client ->getConnection ()->moveMessage ($ folder ->path , $ this ->msgn ) == true ) {
698
+ if ($ expunge ) $ this ->client ->expunge ();
694
699
700
+ $ this ->client ->openFolder ($ folder ->path );
701
+ $ message_num = $ this ->client ->getConnection ()->getMessageNumber ($ next_uid );
695
702
696
- return $ message ;
703
+ $ message = $ folder ->query ()->getMessage ($ message_num );
704
+ $ event = $ this ->getEvent ("message " , "moved " );
705
+ $ event ::dispatch ($ this , $ message );
706
+
707
+ return $ message ;
708
+ }
709
+ }
710
+
711
+ return null ;
697
712
}
698
713
699
714
/**
0 commit comments