ezcMailImapTransport::append PHP Method

append() public method

Use this method to create email messages in a mailbox such as Sent or Draft. $flags is an array of flags to be set to the $mail (if provided): $flag can be one of: - ANSWERED - message has been answered - DELETED - message is marked to be deleted by later EXPUNGE - DRAFT - message is marked as a draft - FLAGGED - message is "flagged" for urgent/special attention - SEEN - message has been read This function automatically adds the '\' in front of each flag when calling the server command. Before calling this method, a connection to the IMAP server must be established and a user must be authenticated successfully.
public append ( string $mailbox, string $mail, array(string) $flags = null )
$mailbox string
$mail string
$flags array(string)
    public function append($mailbox, $mail, $flags = null)
    {
        if ($this->state != self::STATE_AUTHENTICATED && $this->state != self::STATE_SELECTED && $this->state != self::STATE_SELECTED_READONLY) {
            throw new ezcMailTransportException("Can't call append() if not authenticated.");
        }
        $tag = $this->getNextTag();
        $mailSize = strlen($mail);
        if (!is_null($flags)) {
            for ($i = 0; $i < count($flags); $i++) {
                $flags[$i] = '\\' . $this->normalizeFlag($flags[$i]);
            }
            $flagList = implode(' ', $flags);
            $command = "{$tag} APPEND \"{$mailbox}\" ({$flagList}) {{$mailSize}}";
        } else {
            $command = "{$tag} APPEND \"{$mailbox}\" {{$mailSize}}";
        }
        $this->connection->sendData($command);
        $response = trim($this->connection->getLine());
        if (strpos($response, 'TRYCREATE') !== false) {
            throw new ezcMailTransportException("Mailbox does not exist: {$response}.");
        }
        if ($this->responseType($response) == self::RESPONSE_FEEDBACK) {
            $this->connection->sendData($mail);
            $response = trim($this->getResponse($tag));
            if ($this->responseType($response) != self::RESPONSE_OK) {
                throw new ezcMailTransportException("The IMAP server could not append message to mailbox '{$mailbox}': {$response}.");
            }
        } elseif ($this->responseType($response) != self::RESPONSE_OK) {
            throw new ezcMailTransportException("The IMAP server could not append message to mailbox '{$mailbox}': {$response}.");
        }
    }

Usage Example

コード例 #1
0
require_once 'tutorial_autoload.php';
// Create a new IMAP transport object by specifying the server name
$imap = new ezcMailImapTransport("imap.example.com");
// Authenticate to the IMAP server
$imap->authenticate("user", "password");
// Select the Inbox mailbox
$imap->selectMailbox('Inbox');
// List the capabilities of the IMAP server
$capabilities = $imap->capability();
// List existing mailboxes
$mailboxes = $imap->listMailboxes("", "*");
// Fetch the hierarchy delimiter character (usually "/")
$delimiter = $imap->getHierarchyDelimiter();
// Create a new mailbox
$imap->createMailbox("Reports 2006");
// Delete a mailbox
$imap->deleteMailbox("Reports 2005");
// Rename a mailbox
$imap->renameMailbox("Reports 2006", "Reports");
// Copy messages from the selected mailbox (here: Inbox) to another mailbox
$imap->copyMessages("1,2,4", "Reports");
// Set a flag to messages
// See the function description for a list of supported flags
$imap->setFlag("1,2,4", "DELETED");
// Clears a flag from messages
// See the function description for a list of supported flags
$imap->clearFlag("1,2,4", "SEEN");
// Append a message to a mailbox. $mail must contain the mail as text
// Use this with a "Sent" or "Drafts" mailbox
$imap->append("Sent", $mail);
All Usage Examples Of ezcMailImapTransport::append