PHP 8.4.1 Released!

imap_append

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

imap_appendДобавляет строковое сообщение в указанный почтовый ящик

Описание

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

Добавляет строку message в указанный folder.

Список параметров

imap

Экземпляр класса IMAP\Connection.

folder

Имя почтового ящика. Смотрите imap_open() для подробной информации.

Внимание

Передача в этот параметр непроверенных данных небезопасна, если включили директиву imap.enable_insecure_rsh.

message

Добавляемое сообщение в виде строки

При обращении к серверу Cyrus IMAP следует использовать "\r\n" как завершающий символ строки вместо "\n", иначе операция будет неудачна.

options

Если указан, то параметр options также будет записан в folder

internal_date

Если этот параметр указан, он установит INTERNALDATE в добавляемом сообщении. Параметр должен содержать дату, представленную строкой, которая соответствует спецификации rfc2060 для значения date_time.

Возвращаемые значения

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Список изменений

Версия Описание
8.1.0 Параметр imap теперь ожидает экземпляр класса IMAP\Connection; раньше параметр ждал ресурс (resource) imap.
8.0.0 options и internal_date теперь допускают значение null.

Примеры

Пример #1 Пример использования imap_append()

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

$check = imap_check($imap);
echo
"Кол-во сообщений до добавления: ". $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"
. "это проверочное сообщение, пожалуйста, игнорируйте его\r\n"
);

$check = imap_check($imap);
echo
"Кол-во сообщений после добавления : ". $check->Nmsgs . "\n";

imap_close($imap);
?>

Добавить

Примечания пользователей 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