I spend most of today refining the example to make it work properly when saving to the Inbox.Sent folder.
The append command now looks like:
$return = imap_append($stream,$mailbox_addr
, "From: $fromReply\r\n"
. "To: $to\r\n"
. "Subject: $subject\r\n"
. "Date: $now \r\n"
. "X-Mailer: Cmail_v2.0 \r\n"
. "X-Originating-IP: $ip_addr \r\n"
. "MIME-Version: 1 \r\n"
. "Content-Type: text/html;\r\n\tcharset=\"ISO-8859-1\"\r\n"
. "Content-Transfer-Encoding: 8bit \r\n"
. "\r\n\r\n"
. "$wk_msg\r\n"
);
This inserts the current date into the email and lets it support html content. The one thing that I haven't got working yet is including attachments. I presumably have to make the boundaries and attachment content part of the message body.
Chris
imap_append
(PHP 4, PHP 5)
imap_append — Ajoute une message dans une boîte aux lettres
Description
Ajoute un message message dans la boîte aux lettres mbox .
Liste de paramètres
- imap_stream
-
Un flux IMPA retourné par la fonction imap_open().
- mailbox
-
Le nom de la boîte aux lettres, voir la documentation sur la fonction imap_open() pour plus d'informations
- 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 mailbox
Valeurs de retour
Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.
Exemples
Exemple #1 Exemple avec imap_append()
<?php
$stream = imap_open("{imap.example.org}INBOX.Drafts", "username", "password");
$check = imap_check($stream);
echo "Msg Count before append: ". $check->Nmsgs . "\n";
imap_append($stream, "{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($stream);
echo "Nombre de messages après ajout : ". $check->Nmsgs . "\n";
imap_close($stream);
?>
imap_append
07-Feb-2008 11:06
03-May-2007 07:36
The last argument, $options, are flags like for use with imap_setflag_full.
It took a while before I found out
17-Jan-2007 07:57
I have used this function to copy all the emails of one account from one server to another. The problem was that this function don't copy the original receiving date for each message.
To add a fifth field to provide the date, I have made some changes at some php source files following the steps described in http://www.zend.com/lists/php-dev/200303/msg00843.html and it has worked fine.
The correct date format is the returned by the function mail_date in c-client/mail.c source file, for instance: "17-Jan-2007 10:00:01 +0100"
23-Jun-2003 03:26
The parameter description is misleading. You can pass a string of flags such as '\Seen' [see imap_setflag_full()] as the last argument. In the other imap functions, 'options' seems to usually refer to a bitmask, not message flags.
29-Apr-2003 07:29
I use imap_append() to decode message/rfc822 attachments type(embedded emails):
$attachment = imap_fetchbody($mbox,$mailuid,$atpos,FT_UID);
$attachment = imap_base64($attachment);
$res = imap_append($mbox,mboxspec("INBOX"),$attachment);
//the embedded email is now a normal mail in my INBOX
12-Jun-2002 12:24
i used imap_append to copy any composed message into INBOX.Sent folder..
$app = imap_append($stream,"{" . $connectstring . "}INBOX.Sent","$header\r\n" ."$mbody\r\n");
if (!$app) {
error("Email copying to Sent folder FAILED!");
}
01-Aug-2001 06:49
With SIMS IMAP server you also need to use \r\n as a line terminator, otherwise you will be able to add all the header lines correctly, but the body of the message will not be saved.<br>
You can use \n by itself for each header line, but when creating the blank line between the headers and the body you must use \r\n\r\n
14-Sep-1999 09:13
Please observe that imap_append() do not support NNTP posting. Use fsockopen() instead, and do the work yourself.
