imap_append
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_append — 指定されたメールボックスに文字列メッセージを追加する
説明
imap_append(
IMAP\Connection
string
string
?string
?string
): bool
IMAP\Connection
$imap
,string
$folder
,string
$message
,?string
$options
= null
,?string
$internal_date
= null
): bool
指定したメールボックス folder
に文字列メッセージ message
を追加します。
パラメータ
imap
IMAP\Connection クラスのインスタンス。
folder
-
メールボックスの名前。詳細は imap_open() を参照ください。
警告信頼できないデータをこのパラメータに渡すのであれば、 imap.enable_insecure_rsh を無効にしておかなければ危険です。
message
-
追加したいメッセージを表す文字列。
Cyrus IMAP サーバーと通信する際には、改行コードとして "\n" のかわりに "\r\n" を使用する必要があります。さもなくば、操作は失敗します。
options
-
指定した場合は、
options
もそのfolder
に書きこまれます。 internal_date
-
このパラメータが設定されていると、追加したメッセージに INTERNALDATE を設定します。 このパラメータは、rfc2060 の日付時刻値の仕様を満たす文字列でなければなりません。
変更履歴
バージョン | 説明 |
---|---|
8.1.0 |
引数 imap は、IMAP\Connection
クラスのインスタンスを期待するようになりました。
これより前のバージョンでは、有効な imap リソース が期待されていました。
|
8.0.0 |
options と internal_date
は、nullable になりました。
|
例
例1 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"
. "this is a test message, please ignore\r\n"
);
$check = imap_check($imap);
echo "Msg Count after append : ". $check->Nmsgs . "\n";
imap_close($imap);
?>
+add a note
User Contributed Notes 3 notes
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
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");
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'.