Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : IMAP, POP3 and NNTP Functions : imap_mail_move

imap_mail_move

Move specified messages to a mailbox (PHP 4, PHP 5)
bool imap_mail_move ( resource imap_stream, string msglist, string mailbox [, int options] )


Code Examples / Notes » imap_mail_move

php

To move mails via IMAP on an Exchange Server into "Gelöschte Objekte" use:
imap_mail_move($mbox, $delmsg, "Gel&APY-schte Objekte");
It took me some tcpdumping to get this out, since both
imap_utf7_encode and
imap_utf8
did not translate it right.
Guardn


laurent dot penou

to complete the previous example, if the mbox/folders names are
{imap.free.fr}INBOX
{imap.free.fr}INBOX/draft
{imap.free.fr}INBOX/test
and you want to copy/move from INBOX to INBOX/test this is the syntax:
$mbox = imap_open("{imap.free.fr}INBOX",$mailuser,$mailpass)
     or die("can't connect: ".imap_last_error());
...
imap_mail_move($mbox,$messageset,"INBOX/test");
Hope this could help !


vlad php.net

This keeps biting me time after time. A lot of IMAP servers with quotas don't implement 'move' right - they do a 'copy&delete' instead and don't recognize that this conflicts with their quota implementetions. So, if you try to move a large message, you'll exceed your quota even though moving it does not increase the total size of your mailbox. This is not PHP-specific, but I bet it'll bite someone else besides me, so here you go.

portico dot nospam

This function works, just not like everything else IMAP in PHP3... rather than feeding the server {server.ext/type:port}folder just feed it the folder's name.

matt

This function copies the mail and then marks the source as deleted.  In order to see the changes, you must <PRE>imap_expunge</PRE> the source box.

dinter

I've used a dot in
imap_mail_move($mbox,$movmsgid,'INBOX.send');
instead of
INBOX/test
and it work's fine.


jim dot bodine

I offer the following example because it took me HOURS to figure this out
<?php
$this->mailInBox = imap_open($this->mailConnectString."INBOX", $this->accountLogin, $this->accountPassword);
$this->messageCount = imap_num_msg($this->mailInBox);
echo "Processing " . $this->messageCount . " messages:<Br>";
   for ($i = 1; $i <= $this->messageCount; ++$i) {
       $header = imap_header($this->mailInBox, $i);
               
       $prettydate = date("jS F Y", $header->udate);
$fromHost = $header->from[0]->host;

       if (isset($header->from[0]->personal)) {
           $personal = $header->from[0]->personal;
       } else {
           $personal = $header->from[0]->mailbox;
       }
       
       $body = imap_fetchbody($this->mailInBox, $i, "1.1");
if ($body == "") {
  $body = imap_fetchbody($this->mailInBox, $i, "1");
}
        $move = "INBOX.processed" . date("Ymd");
        echo "trying to move:" . $i . "
";
        @imap_mail_move($this->mailInBox, $i, $move);
               
       }
?>


juuuugroid

I had the most trouble with figureing out what the message list was supposed to be.  There was one comment by jan@showstar.com but i was still terribly confused.  So I searched and searched and searched.  I read rfc2060 over 10 times.  Then BAM!  My brother found it here:
http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2060.html#sec-6.4.7
Here is the importand stuff.
Another important field is the SEQUENCE, which identifies a set of messages by consecutive numbers from 1 to n where n is the number of messages in the mailbox.  A sequence may consist of a single number, a pair of numbers delimited by colon (equivalent to all numbers between those two numbers), or a list of single numbers or number pairs.  For example, the sequence 2,4:7,9,12:15 is equivalent to
  2,4,5,6,7,9,12,13,14,15 and identifies all those messages.
There is what I know about it.  BAM!


alex

After using imap_mail_move, imap_mail_copy or imap_delete it is necesary to call imap_expunge() function.

ian

<pre>The syntax for the message list is defined in RFC2060
It is a string, containing a list of message numbers and ranges, separated by commas (no spaces anywhere.) For example, "1,2,5,11:15,19" would be accepted by imap_mail_copy or imap_mail_move.
A range of messages is defined as two message numbers separated by a colon (Ex. "1:10".) Also, a "*" may be used to refer to the last message in a mailbox. (Ex. "1:*" refers to all messages)
Be careful not to use the same mailbox for source and destination, especially if you expunge the mailbox immediately afterwards; the message will be copied (back over itself), flagged as deleted (by the imap_mail_move function), and then expunged.
The following code will move the messages in the $msg_no[] array from the folder in $mbox_name to the folder in $newmbox_name: ($mbox is an already-opened imap stream)
if ($mbox_name != $newmbox_name) {
 reset($msg_no);
 $messageset = implode (",",$msg_no);
 imap_mail_move($mbox,$messageset,$newmbox_name);
 imap_expunge($mbox);
}
</pre>


Change Language


Follow Navioo On Twitter
imap_8bit
imap_alerts
imap_append
imap_base64
imap_binary
imap_body
imap_bodystruct
imap_check
imap_clearflag_full
imap_close
imap_createmailbox
imap_delete
imap_deletemailbox
imap_errors
imap_expunge
imap_fetch_overview
imap_fetchbody
imap_fetchheader
imap_fetchstructure
imap_get_quota
imap_get_quotaroot
imap_getacl
imap_getmailboxes
imap_getsubscribed
imap_header
imap_headerinfo
imap_headers
imap_last_error
imap_list
imap_listmailbox
imap_listscan
imap_listsubscribed
imap_lsub
imap_mail_compose
imap_mail_copy
imap_mail_move
imap_mail
imap_mailboxmsginfo
imap_mime_header_decode
imap_msgno
imap_num_msg
imap_num_recent
imap_open
imap_ping
imap_qprint
imap_renamemailbox
imap_reopen
imap_rfc822_parse_adrlist
imap_rfc822_parse_headers
imap_rfc822_write_address
imap_savebody
imap_scanmailbox
imap_search
imap_set_quota
imap_setacl
imap_setflag_full
imap_sort
imap_status
imap_subscribe
imap_thread
imap_timeout
imap_uid
imap_undelete
imap_unsubscribe
imap_utf7_decode
imap_utf7_encode
imap_utf8
eXTReMe Tracker