PHP 8.4.1 Released!

imap_append

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

imap_appendHängt eine String-Nachricht an ein Postfach an

Beschreibung

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

Der in message übergebene String wird als Nachricht an das Postfach folder angefügt.

Parameter-Liste

imap

Eine IMAP\Connection-Instanz.

folder

Der Name des Postfachs, siehe imap_open() für nähere Informationen

Warnung

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

message

Die anzufügende Nachricht als String

Bei Verbindungen mit dem Cyrus-IMAP-Server ist es zwingend erforderlich, "\r\n" als Zeilenende zu verwenden. Mit einem einfachen "\n" schlägt die Operation fehl.

options

Wenn angegeben, werden die in options gesetzten Optionen auch ins Postfach folder geschrieben.

internal_date

Wenn dieser Parameter angegeben wird, wird das INTERNALDATE für die hinzugefügte Nachricht gesetzt. Der Parameter sollte ein Datumsstring sein, der den rfc2060-Spezifikationen für einen date_time-Wert entspricht.

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 gültige imap-Ressource erwartet.
8.0.0 options und internal_date sind jetzt nullable (akzeptieren den null-Wert).

Beispiele

Beispiel #1 imap_append()-Beispiel

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

$check = imap_check($imap);
echo
"Anzahl der Nachrichten vor dem Anhängen: ". $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"
. "this is a test message, please ignore\r\n"
);

$check = imap_check($imap);
echo
"Anzahl der Nachrichten nach dem Anhängen: ". $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