>

Outlook 전자 메일 계정에 로그인하는 python3 코드를 작성하고 특정 필터 (FROM, SUBJECT, DATE)를 사용하여 전자 메일을 검색하여 가져 와서 구문 분석 한 다음 본문에서 특정 링크를 가져옵니다 , IMAP 및 BeautifulSoup을 사용합니다.

나는 할 수 있었다 : 1- IMAP을 사용하여 내 이메일 계정에 로그인 한 다음 INBOX에 로그인합니다. 2- 이메일을 가져온 다음 파싱합니다. 3- 다른 .txt 파일에서 링크 찾기

내가 할 수 없었던 것은 : IMAP을 사용하여 특정 이메일을 검색합니다.

Outlook에서 특정 이메일을 검색하는 올바른 구문을 표시하여 누군가 나를 도울 수 있는지 궁금합니다.

미리 감사합니다.

import imaplib
import email
from email.utils import parseaddr
username = 'hae42@mail.aub.edu'
password = 'Null'
Mymail = imaplib.IMAP4_SSL('outlook.office365.com')#imap- 
mail.outlook.com or outlook.office365.com
Mymail.login(username, password)
#Mymail.list() #OUT: list of "folders"
Mymail.select("INBOX") #connect to inbox
def get_body(msg):
    if msg.is_multipart():
        return get_body(msg.get_payload(0))
    else:
        return msg.get_payload(None,True)
def search(key, value, Mymail):
    result, data = Mymail.search(None, key, '"()"'.format(value))
    return data
result, data = Mymail.fetch(latest_email_id, '(RFC822)')
raw_email = email.message_from_bytes(data[0][1])
 print(search('FROM', 'email@outlook.example'))

  • 답변 # 1

    IMAPClient와 mailparser를 사용하여 Outlook과 Gmail 등에서 이메일을 읽을 수있었습니다 :

    from imapclient import IMAPClient
    import mailparser
    with IMAPClient(self.host) as server:
        server.login(self.username, self.password)
        server.select_folder('INBOX')
        messages = server.search(['UNSEEN', ])  # in your case: ['FROM', 'email@outlook.example']
        # for each unseen email in the inbox
        for uid, message_data in server.fetch(messages, 'RFC822').items():
            email_message = mailparser.parse_from_string(message_data[b'RFC822'])
    
    

    메일 파서 문서 (위 링크)에 설명 된대로 이메일 요소에 액세스 할 수 있습니다. 예를 들면 다음과 같습니다.

    # parse html from email
    soup = BeautifulSoup(email_message.body, "html.parser")
    msg_body = soup.get_text()
    
    

  • 이전 shell - 괄호/브래킷에 문제가있는 컬
  • 다음 java - 앱이 시작될 때마다 FirebaseRecyclerAdapter가 충돌 함