|
imap_mail_copy
Copy specified messages to a mailbox
(PHP 4, PHP 5)
Code Examples / Notes » imap_mail_copyfongming
when you list your mailbox,you have to decode the mailbox name, use imap_utf7_decode(); for example: //---------------------------------------------------- $host="localhost"; $port=143; $ht="{".$host.":".$port."/imap/notls}INBOX"; $mbox=imap_open($ht,$my_user,$my_pass)or die("can't open mail "); $mail_list=imap_listmailbox($mbox,$ht,"*"); sort($mail_list); foreach($mail_list as $k=>$v) { $v_list=explode("}",$v); echo imap_utf7_decode(str_replace("INBOX.","",$v_list[1])); echo " "; } ian
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) <pre>if ($mbox_name != $newmbox_name) { reset($msg_no); $messageset = implode (",",$msg_no); imap_mail_move($mbox,$messageset,$newmbox_name); imap_expunge($mbox); } </pre> marcus
If you are having problems getting imap_mail_copy and imap_mail_move to work, check you have installed imap_devel (the imap development libraries) as well as imap (the imap daemon). Without it, PHP appears to configure correctly --with-imap, but some functions do not work. It took me about 12 hours to figure this out!! hxlvt
After much fooling around, imap_mail_copy did work for me. One thing you might want to check, if you are having problems, is the new mailbox name. Make sure it is just a folder name, e.g. INBOX.haha without the server part.
|
Change Languageimap_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 |