Como posso remover e-mails do servidor IMAP no shell do Linux? [fechadas]

0

This question has been replicated under suggestion from this one at StackOverflow, as long as it is a programming issue, but seems to depend on Linux tools. I will post the link to the solution (if found) on both places.

Eu não sei muito sobre o correio IMAP , pois sempre usei o POP3. Mas excluir e-mails do servidor de e-mail POP3 era possível usando ferramentas incluídas em clientes de e-mail do Windows, como The Bat!

Mas agora no meu trabalho eu tenho uma nova conta IMAP com um problema estúpido: às vezes, e-mails de fora do meu domínio ( @myenterprise.com part) não chegam, e gostaria de script algum método para detectá-lo.

Apenas um script de shell simples (o Linux é altamente preferido para mim no script) que envia e-mails periódicos de uma conta externa e verifica a chegada correta deles seria suficiente, mas se eu programá-lo para executar uma vez a cada hora ... bem, depois de alguns dias, terei muitos Subject:Test de e-mails no lixo. Portanto, a solução seria excluí-los do servidor IMAP após as verificações.

Como posso excluir e-mails específicos do meu servidor IMAP do shell do Linux de uma maneira que pode ser roteirizada?

Bash shell preferido, se as soluções forem específicas.

    
por Sopalajo de Arrierez 30.04.2018 / 22:59

1 resposta

2

Eu iria para um script Python. O script a seguir solicita o IMAP-Server, um nome de usuário e senha e uma string de assunto. Em seguida, ele lista todos os e-mails em que o assunto contém a string de assunto especificada.

Comente na linha imapserver.store (num, '+ FLAGS', '\ Deleted') quando estiver satisfeito com o comportamento. Os e-mails mostrados serão então sinalizados para exclusão.

#!/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: "))

Eu também criei um Github-Gist onde melhorias adicionais serão feitas: link

    
por 01.05.2018 / 00:17

Tags