PHP 8.1.0 RC 4 available for testing

imap_mail_copy

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_mail_copyKopiert Nachrichten in ein Postfach

Beschreibung

imap_mail_copy(
    IMAP\Connection $imap,
    string $message_nums,
    string $mailbox,
    int $flags = 0
): bool

imap_mail_copy() kopiert die mit message_nums angegebenen Nachrichten in das Postfach mailbox.

Parameter-Liste

imap

Eine IMAP\Connection-Instanz.

message_nums

message_nums ist keine Liste von Nachrichtennummern, sondern ein Nachrichtenbereich (wie in » RFC2060 beschrieben).

mailbox

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

Warnung

Die Übergabe von nicht vertrauenswürdigen Daten an diesen Parameter ist unsicher, falls imap.enable_insecure_rsh nicht deaktiviert ist.

flags

flags ist eine Bitmaske, die sich aus einem oder mehreren der folgenden Flags zusammensetzt:

  • CP_UID - die Nummern der Nachrichten sind UIDs
  • CP_MOVE - Nachrichten nach dem Kopieren aus dem aktuellen Postfach entfernen

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.1.0 Der Parameter imap erwartet nun eine IMAP\Connection-Instanz; vorher wurde eine Ressource erwartet.

Siehe auch

add a note add a note

User Contributed Notes 5 notes

up
3
marcus at names dot co dot uk
19 years ago
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!!
up
3
jigar dot dhaduk79 at gmail dot com
6 years ago
When we want to copy more than one mail, we can write '(string)' before msg_num. Like..

$msg_num = "1,2,3,4,5,6,7";
$copy = imap_mail_copy($imap_stream, (string) $msg_num, '[Gmail]/Important', CP_UID);
up
1
Ben
8 years ago
If you use this function and you get the following notice:

Notice: Unknown: IMAP protocol error: Could not parse command (errflg=2) in Unknown on line 0

Notice: Unknown: Could not parse command (errflg=2) in Unknown on line 0

you should check the function parameters. This notice appears (according to what I found on the internet and my problems) when it gets an invalid $msglist. So be sure to give the right number (as a String!):
"$msg_num", $msg_num or (string) $msg_num.

Dont use '$msg_num' when calling the function, this will literally send the string $msg_num.
You can give a string like "1,3,5,7,8", which will work perfectly fine to move the given mails.

I had all my mailnumbers in an array ( $messageSet) and used

<?php
$messageSetImpl
= implode ( "," , $messageSet );

imap_mail_copy( $imapStream, $messageSetImpl, $mailBox )
?>

What I hadn't had thougt of was that my $messageSet was sometimes empty, that was when I got the notice. So you might want to check that by putting first:

<?php
if ( !( empty( $messageSet ) ) ) {

$messageSetImpl = implode ( "," , $messageSet );

imap_mail_copy( $imapStream, $messageSetImpl, $mailBox )

}
?>

That should work.
up
1
hxlvt at hotmail dot com
20 years ago
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.
up
-1
richard dot oplustil at gmail dot com
9 years ago
imap_ mail_ move and imap_mail_copy don't work with sequence numbers on MS Exchange. imap_ uid in combination with CP_UID works fine.
To Top