Как я могу удалить электронные письма с сервера IMAP в оболочке Linux?

Вы всегда можете nix-store --delete /nix/store/pathесли вы не поддерживаете путь некоторыми ссылками, но вам следует обратить внимание на некоторые детали. Я предполагаю, что ваши источники получены с помощью fetchurlили аналогичного фиксированного -вывода. Они определяют хэш вывода, и путь, который у вас есть в хранилище nix, соответствует этому хешу, поэтому на самом деле это правильный источник (, учитывая то, что вы просили у nix ).

Типичный простой способ — перезаписать хэш в fetchurlнекоторым неправильным значением, например. замените некоторые символы нулями, а затем nix попытается повторно -получить и напечатать полученный (несоответствующий )хэш, который затем можно обновить. Также есть nix-prefetch-url, чтобы избежать повторной выборки и т. д.

0
30.04.2018, 23:59
1 ответ

Я бы выбрал сценарий Python. Следующий сценарий запрашивает сервер IMAP -, имя пользователя, пароль и строку темы. Затем он перечисляет все письма, тема которых содержит заданную строку темы.

Прокомментируйте строку imapserver.store (num, '+FLAGS', '\Deleted' ), если вас устраивает поведение. Показанные письма будут помечены для удаления.

#!/usr/bin/python3

import getpass

def del_imap(server, port, login, password, search):
    import imaplib, email

    # NOTE: According to RFC 1730 the SEARCH commands searches for 'messages that
    # CONTAIN the specified string. When multiple keys are specified, the result
    # is the intersection (AND function) of all the messages that match those
    # keys.
    # _search_command = '(FROM ' + search + ')'
    # _search_command = '(SUBJECT "testmail" FROM ' + search + ')'
    _search_command = '(SUBJECT ' + search + ')'

    imapserver = imaplib.IMAP4_SSL(server, port)
    imapserver.login(login, password)
    imapserver.select()

    typ, data = imapserver.search(None, _search_command)
    for num in data[0].split():
        typ, data = imapserver.fetch(num, '(RFC822.HEADER)')
        print (data[0][1].decode())
        # Uncomment the following line if the listed files should also be
        # flagged for deletion
        # imapserver.store(num, '+FLAGS', '\\Deleted')
    imapserver.close()
    imapserver.logout()

del_imap(input("IMAP Server: "), 993, input("Username: "), getpass.getpass(), input("Search: "))

Я также создал Github -Gist, где будут внесены дальнейшие улучшения:https://gist.github.com/jkirk/39dc64747a9d78accde49de2e8dbdc6d

2
28.01.2020, 02:32

Теги

Похожие вопросы