iam python과 함께 imap을 사용하려고 시도했지만 iam 매번 오류가 발생했습니다. 모든 단계를 따라 Gmail에서 imap을 활성화하고 captcha를 잠금 해제했지만 첫 번째 실행 후 iam이 오류를 얻었습니다 .pls는 이미 감사합니다.

raise self.error(dat[-1])
imaplib.error: b'[AUTHENTICATIONFAILED] Invalid credentials (Failure)'

Gmail 후 나는 Gmail에서 Alerte 보안을 얻었고 imap의 모든 액세스가 차단되었습니다.

사용 된 코드`

# Importing libraries 
import imaplib, email 
    password = 'USER_PASSWORD'
    imap_url = 'imap.gmail.com'
    # Function to get email content part i.e its body part 
    def get_body(msg): 
        if msg.is_multipart(): 
            return get_body(msg.get_payload(0)) 
            return msg.get_payload(None, True) 
    # Function to search for a key value pair 
    def search(key, value, con): 
        result, data = con.search(None, key, '"{}"'.format(value)) 
        return data 
    # Function to get the list of emails under this label 
    def get_emails(result_bytes): 
        msgs = [] # all the email data are pushed inside an array 
        for num in result_bytes[0].split(): 
            typ, data = con.fetch(num, '(RFC822)') 
        return msgs 
    # this is done to make SSL connnection with GMAIL 
    con = imaplib.IMAP4_SSL(imap_url) 
    # logging the user in 
    con.login(user, password) 
    # calling function to check for email under this label 
    # fetching emails from this user "tu**h*****[email protected]" 
    msgs = get_emails(search('FROM', 'MY_ANOTHER_GMAIL_ADDRESS', con)) 
    # Uncomment this to see what actually comes as data 
    # print(msgs) 
    # Finding the required content from our msgs 
    # User can make custom changes in this part to 
    # fetch the required content he / she needs 
    # printing them by the order they are displayed in your gmail 
    for msg in msgs[::-1]: 
        for sent in msg: 
            if type(sent) is tuple: 
                # encoding set as utf-8 
                content = str(sent[1], 'utf-8') 
                data = str(content) 
                # Handling errors related to unicodenecode 
                    indexstart = data.find("ltr") 
                    data2 = data[indexstart + 5: len(data)] 
                    indexend = data2.find("</div>") 
                    # printtng the required content which we need 
                    # to extract from our email i.e our body 
                    print(data2[0: indexend]) 
                except UnicodeEncodeError as e: 

  • 답변 # 1

    클라우드 호스트 등에서 실행하는 경우 OAuth 인증 (또는 앱별 비밀번호)을 구현하지 않으면 작동하지 않을 것입니다.

    Google의 계정 보안은 최종 사용자 호스트의 로그인 만 허용하도록 설정된 것으로 보입니다. 개인 컴퓨터에서 실행하는 경우 (또한 로그인 한 경우) 보안 감소 설정을 활성화하거나 앱 전용 암호를 생성하거나 OAuth를 구현해야합니다.

관련 자료

  • 이전 javascript - typeerror - 사용자에게 메시지를 보내려고 할 때 정의되지 않은 '보내기'속성을 읽을 수 없습니다
  • 다음 java - Android Studio의 EditText 및 Focus