imap_append

(PHP 4, PHP 5, PHP 7)

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

Описание

bool imap_append ( resource $imap_stream , string $mailbox , string $message [, string $options = NULL [, string $internal_date = NULL ]] )

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

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

imap_stream

Поток IMAP, полученный из imap_open().

mailbox

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

message

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

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

options

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

internal_date

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

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

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

Версия Описание
5.3.2 Добавлена поддержка INTERNALDATE для imap_append.

Примеры

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

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

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

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

imap_close($stream);
?>

Коментарии

The date format string to use when creating $internal_date is 'd-M-Y H:i:s O'.
2010-08-15 23:52:46
http://php5.kiev.ua/manual/ru/function.imap-append.html
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
2013-02-21 22:59:58
http://php5.kiev.ua/manual/ru/function.imap-append.html
Автор:
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");
2015-05-15 15:18:12
http://php5.kiev.ua/manual/ru/function.imap-append.html
This function is how you take a sent message in your mail shell and place a copy of it in the remote mail server's sent folder.

It is however not intuitive and I struggled for a couple hours so I'm placing these notes here to spare others the aggravation. Some of the errors I encountered:

 - Can't append to mailbox with such a name
 - Internal date not correctly formatted

The second/folder parameter is not the string you might think it is (e.g. "Sent", "Inbox.Sent", etc). It is the connection information used by imap_open() which doesn't make sense as the connection is already open! Whatever, here is a basic example addressing those three errors:

<?php
$server 
'{mail.example.com:993/ssl/imap}INBOX.Sent';
$mail_connection_folder imap_open($server$user$pass);

if (
$mail_connection)
{
 
$result imap_append($mail_connection$server$message_string_raw'\\Seen'date('d-M-Y H:i:s O'));
}
?>

I had been using the PHP Pear Mail extension which did a fantastic job with DMARC, SPF, DKIM, etc. However it's not well maintained and I couldn't figure out if it returns the email message string. The PHPMailer library (https://github.com/PHPMailer/PHPMailer) does return the message string:

<?php
//Skip to key parts:
$result $mail->send();

if (
$result)
{
 
$message_string_raw $mail->getSentMIMEMessage();
}
else {
/*error handling*/}
?>

Hopefully this will spare some folks a lot of aggravation.
2025-02-02 07:47:58
http://php5.kiev.ua/manual/ru/function.imap-append.html

    Поддержать сайт на родительском проекте КГБ