Переместить сообщение в папку «Входящие» - PullRequest
0 голосов
/ 06 января 2019

Используется https://github.com/SSilence/php-imap-client

Imap-соединение и настройки:

try {
    $imap = new Imap([
        'flags' => [
            'service' => ImapConnect::SERVICE_IMAP,
            'encrypt' => ImapConnect::ENCRYPT_SSL,
            'validateCertificates' => ImapConnect::NOVALIDATE_CERT,
        ],
        'mailbox' => [
            'remote_system_name' => 'localhost',
        ],
        'connect' => [
            'username' => $username,
            'password' => $password
        ]
    ]);
} catch (ImapClientException $error) {
    echo $error->getMessage().PHP_EOL; 
    die();
}

есть функция для перемещения сообщений в другую папку

$imap->moveMessages($_POST['id'], 'INBOX.Archive');

Отлично работает! Но как переместить это сообщение обратно в папку «Входящие»? Я попробую:

$imap->moveMessages($_POST['id'], 'INBOX');

Это не работа. Извините, мой плохой английский.

Обновление:

Вид спереди:

$imap->selectFolder("INBOX");
$emails = $imap->getMessages(20,0); 
foreach($emails as $email){
    if($email->header->seen == 0) {
        $addUnreadClass = 'unseen';
    } else {
        $addUnreadClass = '';
    }
    if($email->header->flagged == 0) {
        $addFlaggedIcon = '<i class="far fa-star flag"></i>';
    } else {
        $addFlaggedIcon = '<i class="fas fa-star flag flagged"></i>';
    }
    if(!empty($email->attachments)) {
        $addAttachmentIcon = '<i class="icon-link"></i>';
    } else {
        $addAttachmentIcon = ''; 
    }
    $unixTimestamp=strtotime($email->header->date);

    $uid = $imap->getUid($email->header->msgno);

    echo '
        <div class="d-flex pb-1 px-1 message-item '.$addUnreadClass.'" data-uid="'.$uid.'" data-id="'.$email->header->msgno.'">
            <div class="col-1 p-0"> 
                <div class="custom-control custom-checkbox">
                    <input type="checkbox" class="custom-control-input" id="customCheck'.$email->header->msgno.'">
                    <label class="custom-control-label" for="customCheck'.$email->header->msgno.'">&nbsp;</label>
                </div>
                '.$addFlaggedIcon.'
            </div>
            <div class="col-8 pl-1">
                <span class="d-block mail-title text-truncate">'.$email->header->from.'</span>
                <span class="d-block mail-subject text-truncate">'.$email->header->subject.'</span>
            </div>
            <div class="col-3 px-0 text-right">
                <div class="mail-date">'.date("M d", $unixTimestamp).'</div>
                '.$addAttachmentIcon.'
            </div>
        </div>
    ';
}

Событие Jquery / ajax для сообщения запуска хода:

$("#selected-controls .moveTo").click(function() {
$('#selected-controls').hide();
var selected = [];
$('.message-item input:checked').each(function() {
    selected.push($(this).parent().parent().parent().data('uid'));
});
$.confirm({
    title: 'Choose folder',
    content: $('#moveFolders').html(),
    theme: 'modern',
    buttons: {
        confirm: {
            text: 'OK',
            btnClass: 'btn-green',
            action: function () {
                var selectedFolder = this.$content.find('select').val();
                $.ajax({
                    type: "POST",
                    url: 'ajax.php',
                    data: {action: "moveTo", id: selected, folder: selectedFolder},
                    success: function(data){
                        $.notify({
                            icon: 'far fa-check-circle',
                            title: 'Success!',
                            message: 'Selected messages moved to another folder.'
                            },{
                            type: 'success',
                            animate: {
                                enter: 'animated fadeInDown',
                                exit: 'animated fadeOutUp'
                            },
                            showProgressbar: true
                        });
                    }
                });
                $('.inbox').addClass('loading');
                var folder = $('.folder.active').ignore("span").text();
                $.ajax({
                    type: "POST",
                    url: 'ajax.php',
                    data: {action: "changeFolder", folder: folder},
                    success: function(data){
                        $('.inbox .messages-container .mCSB_container').html(data);
                        $('.messages-container .scrollbar').mCustomScrollbar("update");
                        $('.inbox').removeClass('loading');
                    }
                });
            }
        },
        cancel: {
            text: 'Cancel',
            btnClass: 'btn-red',
            action: function () {

            }
        }
    }
});
* * 1 022});

И функция PHP:

if ($action == "moveTo"){
    if ($folder == 'INBOX'){
        $folder = 'INBOX';
    } else {
        $folder = 'INBOX.'.$folder;
    }
    $imap->moveMessages($_POST['id'], $folder);
}

Работает из Inbox, а не из других папок. Не выдавайте ошибок, обновите список рассылки с 0 изменениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...