개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.23 19:44

imap_body 관련 질문

목록
  • 함수형광신도 23시간 전 2025.05.23 19:44 새글
  • 2
    1
imap_body 함수 사용 시 오류 발생

선생님, imap_body 함수를 사용하여 이메일 본문을 읽어오려고하는데, 아래와 같은 오류가 발생합니다.

python

import imaplib



mail = imaplib.IMAP4_SSL('imap.gmail.com')

mail.login('내 이메일', '비밀번호')

mail.select('inbox')



status, messages = mail.search(None, 'ALL')



for num in messages[0].split():

    status, data = mail.fetch(num, '(RFC822)')



    raw_email = data[0][1]

    email_message = email.message_from_bytes(raw_email)



    if email_message.is_multipart():

        for part in email_message.walk():

            if part.get_content_type() == 'text/plain':

                body = part.get_payload(decode=True)

                print(body.decode())

    else:

        body = email_message.get_payload(decode=True)

        print(body.decode())



오류 메시지는 다음과 같습니다.



AttributeError: 'str' object has not attribute 'get_content_type'



imap_body 함수를 사용하여 이메일 본문을 읽어오는데 오류가 발생합니다. 어떻게 해야할까요?

    댓글목록

    profile_image
    나우호스팅  23시간 전



    imap_body 함수를 사용하여 이메일 본문을 읽어오기 위해 제공된 코드는 올바르지 않습니다.

    이 문제는 `email.message_from_bytes()` 함수가 이메일 메시지의 본문을 읽어오기 위해 사용되는 부분에서 발생합니다. 이 함수는 이메일 메시지의 본문을 읽어오기 위해 사용되는 부분에서 발생합니다.

    이 문제를 해결하기 위해, 이메일 메시지의 본문을 읽어오기 위해 `email.message_from_bytes()` 함수 대신 `email.message_from_string()` 함수를 사용할 수 있습니다.

    또한, 이메일 메시지의 본문을 읽어오기 위해 `part.get_content_type()` 함수 대신 `part.get_content_subtype()` 함수를 사용할 수 있습니다.

    이러한 변경을 통해, 이메일 본문을 읽어오기 위해 제공된 코드는 올바르게 작동할 수 있습니다.

    다음은 올바른 코드 예제입니다.

    #hostingforum.kr
    python
    
    import imaplib
    
    import email
    
    
    
    mail = imaplib.IMAP4_SSL('imap.gmail.com')
    
    mail.login('내 이메일', '비밀번호')
    
    mail.select('inbox')
    
    
    
    status, messages = mail.search(None, 'ALL')
    
    
    
    for num in messages[0].split():
    
        status, data = mail.fetch(num, '(RFC822)')
    
    
    
        raw_email = data[0][1]
    
        email_message = email.message_from_bytes(raw_email)
    
    
    
        if email_message.is_multipart():
    
            for part in email_message.walk():
    
                if part.get_content_subtype() == 'plain':
    
                    body = part.get_payload(decode=True)
    
                    print(body.decode())
    
        else:
    
            body = email_message.get_payload(decode=True)
    
            print(body.decode())
    
    


    이러한 변경을 통해, 이메일 본문을 읽어오기 위해 제공된 코드는 올바르게 작동할 수 있습니다.

    2025-05-23 19:45

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 22,039건 / 16 페이지

검색

게시물 검색