PHP 8.1.2 Released!

imap_mail_copy

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

imap_mail_copyCopie les messages spécifiés dans une boîte aux lettres

Description

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

Copie les messages email spécifiés par message_nums dans la boîte aux lettres spécifié.

Liste de paramètres

imap

Une instance de IMAP\Connection.

message_nums

message_nums est un intervalle, et pas seulement une liste de numéros de message (comme décrit dans la » RFC2060).

mailbox

Le nom de la boîte aux lettres, voir la documentation de la fonction imap_open() pour plus de détails

Avertissement

Passer des données qui ne sont pas digne de confiance à ce paramètre est dangereux, sauf si, imap.enable_insecure_rsh est désactivé.

flags

flags est un masque, qui peut contenir une ou plusieurs des valeurs suivantes :

  • CP_UID - la séquence de nombre contient des UIDS
  • CP_MOVE - Efface les messages après copie

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

Version Description
8.1.0 La paramètre imap attend désormais une instance de IMAP\Connection ; auparavant, une ressource était attendu.

Voir aussi

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
21 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