ConFoo 2025

imap_append

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

imap_appendAjoute un message dans une boîte aux lettres

Description

imap_append(
    IMAP\Connection $imap,
    string $folder,
    string $message,
    ?string $options = null,
    ?string $internal_date = null
): bool

Ajoute un message au folder spécifié.

Liste de paramètres

imap

Une instance de IMAP\Connection.

folder

Le nom de la boîte aux lettres, voir la documentation sur la fonction imap_open() pour plus d'informations

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é.

message

Le message à ajouter, sous la forme d'une chaîne de caractères

Lors des échanges avec le serveur Cyrus IMAP, vous devrez utiliser "\r\n" comme terminaison de ligne, à la place de "\n" ou l'opération échouera.

options

Si fourni, le paramètre options sera également écrit dans la boîte folder

internal_date

Si ce paramètre est défini, il mettra les INTERNALDATE sur le message joint. Le paramètre doit être une chaîne de date qui est conforme aux spécifications du rfc2060 pour une valeur date_time.

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 resource imap était attendue.
8.0.0 options et internal_date sont désormais nullable.

Exemples

Exemple #1 Exemple avec imap_append()

<?php
$imap
= imap_open("{imap.example.org}INBOX.Drafts", "username", "password");

$check = imap_check($imap);
echo
"Msg Count before append: ". $check->Nmsgs . "\n";

imap_append($imap, "{imap.example.org}INBOX.Drafts"
, "From: me@example.com\r\n"
. "To: you@example.com\r\n"
. "Subject: test\r\n"
. "\r\n"
. "Ceci est un message de test. Ignorez le.\r\n"
);

$check = imap_check($imap);
echo
"Nombre de messages après ajout : ". $check->Nmsgs . "\n";

imap_close($imap);
?>

add a note

User Contributed Notes 3 notes

up
19
rixsta at hotmail dot com
11 years ago
Hi,

As we have been struggling with this for some time I wanted to share how we got imap_append working properly with all MIME parts including attachments. If you are sending email and also wish to append the sent message to the Sent Items folder, I cannot think of an easier way to do this, as follows:

1) Use SwiftMailer to send the message via PHP.
$message = Swift_Message::newInstance("Subject goes here");
(then add from, to, body, attachments etc)
$result = $mailer->send($message);

2) When you construct the message in step 1) above save it to a variable as follows:

$msg = $message->toString(); (this creates the full MIME message required for imap_append()!! After this you can call imap_append like this:

imap_append($imap_conn,$mail_box,$msg."\r\n","\\Seen");

I hope this helps the readers, and prevents saves people from doing what we started doing - hand crafting the MIME messages :-0
up
9
Krzysiek
9 years ago
You can use PHPMailer ( https://github.com/PHPMailer/PHPMailer/ ) with imap.

<?php
// after creating content of mail you have to run preSend() - part of send() method
$mail->send();
// and you can get whole raw message with getSentMIMEMessage() method
imap_append($imap, $mailserver.'INBOX.Sent',$mail->getSentMIMEMessage(), "\\Seen");
up
5
kaminski at istori dot com
14 years ago
The date format string to use when creating $internal_date is 'd-M-Y H:i:s O'.
To Top