Linux 쉘의 IMAP 서버에서 이메일을 삭제하는 방법은 무엇입니까? [폐쇄]

Linux 쉘의 IMAP 서버에서 이메일을 삭제하는 방법은 무엇입니까? [폐쇄]

이 질문은 제안된 대로 복사되었습니다.이것 StackOverflow에서는 프로그래밍 질문일 뿐이지만 Linux 도구에 의존하는 것 같습니다. 솔루션(찾은 경우)에 대한 링크를 두 곳에 게시하겠습니다.

나는 잘 이해하지 못한다.IMAP 메일, 왜냐하면 나는 항상 POP3를 사용해 왔기 때문입니다. 하지만이메일 삭제예를 들어 Windows 이메일 클라이언트에 포함된 도구를 사용하여 POP3 메일 서버에서 메일을 보낼 수 있습니다.박쥐!.

그런데 지금은 새로운 직업을 갖게 됐어요IMAP 계정어리석은 질문이 있습니다. 때때로 내 도메인 외부에서 보낸 이메일이 부분적으로 @myenterprise.com도착하지 않고 이를 감지할 수 있는 방법을 작성하고 싶을 때가 있습니다.

그냥 단순한쉘 스크립트(스크립팅 측면에서 저는 Linux를 매우 선호합니다.) 외부 계정에서 정기적으로 이메일을 보내고 제대로 도착하는지 확인하는 것만으로도 충분합니다. 하지만 매시간 실행되도록 예약하면... 음 , 많은 일이 있을 것입니다. 며칠 안에 Subject:Test이메일이 스팸함에 들어있습니다. 따라서 해결 방법은 확인 후 IMAP 서버에서 삭제하는 것입니다.

내가 어떻게 할 수있는삭제내가 보낸 특정 이메일IMAP서버:리눅스 쉘스크립트 방식으로?

솔루션이 구체적인 경우 Bash 쉘이 선호됩니다.

답변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

관련 정보