PHP Doku:: Verschiebt Nachrichten in ein anderes Postfach - function.imap-mail-move.html

Verlauf / Chronik / History: (2) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzE-Mail-relevante ErweiterungenIMAP, POP3 and NNTPIMAP Funktionenimap_mail_move

Ein Service von Reinhard Neidl - Webprogrammierung.

IMAP Funktionen

<<imap_mail_copy

imap_mail>>

imap_mail_move

(PHP 4, PHP 5)

imap_mail_moveVerschiebt Nachrichten in ein anderes Postfach

Beschreibung

bool imap_mail_move ( resource $imap_stream , string $msglist , string $mailbox [, int $options = 0 ] )

imap_mail_move() verschiebt die mit msglist angegebenen Nachrichten in das Postfach mailbox.

Parameter-Liste

imap_stream

Eine von imap_open() zurückgegebene IMAP-Verbindung.

msglist

Der zu verschiebende Nachrichtenbereich, für Formatbeschreibungen siehe » RFC2060.

mailbox

Das Zielpostfach, für weitere Informationen siehe imap_open().

options

options kann zur Zeit nur eine Option enthalten:

  • CP_UID - die Nachrichtennummern sind UIDs

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Siehe auch


10 BenutzerBeiträge:
- Beiträge aktualisieren...
jim dot bodine at comcast dot net
5.07.2007 7:49
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 . "<br>";
                    @
imap_mail_move($this->mailInBox, $i, $move);
                                       
                }

?>
alex at bestgames dot ro
21.11.2005 10:36
After using imap_mail_move, imap_mail_copy or imap_delete it is necesary to call imap_expunge() function.
php at guardn dot de
9.07.2003 18:06
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
dinter at gmx dot de
27.01.2003 19:18
I've used a dot in
imap_mail_move($mbox,$movmsgid,'INBOX.send');
instead of
INBOX/test
and it work's fine.
vlad (php.net)
4.11.2002 22:37
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.
juuuugroid at yahoo dot com
17.07.2002 11:28
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!
laurent dot penou at gadz dot org
17.08.2001 21:28
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 !
ian at showstar dot com
21.01.2000 3:41
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)

<?php
if ($mbox_name != $newmbox_name) {
 
reset($msg_no);
 
$messageset = implode (",",$msg_no);
 
imap_mail_move($mbox,$messageset,$newmbox_name);
 
imap_expunge($mbox);
}
?>
portico dot nospam at neverwas dot net
11.01.2000 12:17
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 at bonneau dot net
21.12.1999 0:49
This function copies the mail and then marks the source as deleted.  In order to see the changes, you must imap_expunge the source box.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)