Python 기본 상세 한 메 일 처리

16130 단어 python우편 처리
이메일
Python 표준 라 이브 러 리 는 SMTP 프로 토 콜 을 실현 하기 위해 smtplib 를 제공 합 니 다.표준 라 이브 러 리 는 이메일 모듈 을 제공 하여 메 일 형식 을 구축 하 는 데 도움 을 줍 니 다.SMTP(Simple Mail Transfer Protocol,즉 간단 한 메 일 전송 프로 토 콜)는 원본 주소 에서 목적 주소 로 메 일 을 전송 하 는 규칙 으로 메 일의 중간 방식 을 제어 합 니 다.
  • QQ 메 일 비밀번호(인증 코드)가 져 오기
  • 在这里插入图片描述  
    2.일반 텍스트 형식의 메 일 을 보 냅 니 다.
    
    import smtplib
    
    from email.mime.text import MIMEText
    from email.header import Header
    
    #      
    sender = '[email protected]'(      )
    #     (        )
    password = '123456'(      )
    #        ,    []  ,                
    receiver = ['[email protected]', ](          )
    #     
    text = 'Hello,baby'
    message = MIMEText(text, 'plain', 'utf-8')
    #         
    message['From'] = Header('     ', 'utf-8')
    #         
    message['To'] = Header('baby', 'utf-8')
    #     
    message['Subject'] = '    ,   !'
    
    try:
        #   QQ         
        smtp = smtplib.SMTP('smtp.qq.com')
        #   
        smtp.login(sender, password)
        #   
        smtp.sendmail(sender, receiver, message.as_string())
        print('      !')
        #      
        smtp.quit()
    except smtplib.SMTPException as e:
        print('Error!      !', e)
    
    일반 텍스트 형식의 메 일 실행 결과 보 내기:
    在这里插入图片描述
    3.HTML 형식의 메 일 을 보 냅 니 다.
    
    import smtplib
    
    from email.mime.text import MIMEText
    from email.header import Header
    
    #      
    sender = '[email protected]'(      )
    #     (        )
    password = '123456'(      )
    #        ,    []  ,                
    receiver = ['[email protected]', ](          )
    #     
    msg = '''
        <p><a href='https://blog.csdn.net/weixin_46382560?spm=1011.2124.3001.5343'>     </p>
              Life goes on, learning goes on
            </p> <!----></div></div> <div class="user-profile-head-info-b" data-v-d1dbb6f8><ul data-v-d1dbb6f8><li data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>22,574</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>    </div></li> <li data-v-d1dbb6f8><a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>24</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>    </div></a></li> <li data-v-d1dbb6f8><a href="https://blog.csdn.net/rank/list/total" rel="external nofollow"  rel="external nofollow"  target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5476&quot;}" data-report-query="spm=3001.5476" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>128,997</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>    </div></a></li> <li data-v-d1dbb6f8><a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>762</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>    </div></a></li></ul></div></div></div> <div class="user-profile-body" data-v-3f0fdf46 data-v-80922f46><div class="user-profile-body-inner" data-v-3f0fdf46><div class="user-profile-body-left" data-v-3f0fdf46><div class="user-profile-aside" data-v-d487ed78 data-v-3f0fdf46><div class="user-general-info single-general-info" data-v-d487ed78><ul data-v-d487ed78><!----> <!----> <li class="user-general-info-join-csdn" data-v-d487ed78><i data-v-d487ed78></i> <span data-v-d487ed78> </span> <span class="user-general-info-key-word" data-v-d487ed78>2020-02-22</span> <span data-v-d487ed78>  CSDN</span></li></ul></div> <!----> <div class="user-achievement user-profile-aside-common-box" data-v-d487ed78><div class="aside-common-box-head" data-v-d487ed78>    </div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content" data-v-d487ed78><ul data-v-d487ed78><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022819.png)"></i>
            <div>  <span>212</span>   </div>
          </li><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022831.png)"></i>
            <div>    <span>111</span>   </div>
          </li><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022828.png)"></i>
            <div>  <span>562</span>   </div>
          '''
    #        HTML  
    message = MIMEText(msg, 'html', 'utf-8')
    #         
    message['From'] = Header('     ', 'utf-8')
    #         
    message['To'] = Header('baby', 'utf-8')
    #     
    message['Subject'] = '    ,   !'
    
    try:
        #   QQ         
        smtp = smtplib.SMTP('smtp.qq.com')
        #   
        smtp.login(sender, password)
        #   
        smtp.sendmail(sender, receiver, message.as_string())
        print('      !')
        #      
        smtp.quit()
    except smtplib.SMTPException as e:
        print('Error!      !', e)
    
    HTML 형식의 메 일 을 보 내 는 실행 결과:
    在这里插入图片描述
    4.첨부 파일 이 있 는 메 일 을 보 냅 니 다.
    
    import smtplib
    
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    
    #      
    sender = '[email protected]'(      )
    #     (        )
    password = '123456'(      )
    #        ,    []  ,                
    receiver = ['[email protected]', ](          )
    #            
    message = MIMEMultipart()
    #         
    message['From'] = Header('     ', 'utf-8')
    #         
    message['To'] = Header('baby', 'utf-8')
    #     
    message['Subject'] = '    ,   !'
    #     
    msg = '''
        <p><a href='https://blog.csdn.net/weixin_46382560?spm=1011.2124.3001.5343'>     </p>
              Life goes on, learning goes on
            </p> <!----></div></div> <div class="user-profile-head-info-b" data-v-d1dbb6f8><ul data-v-d1dbb6f8><li data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>22,574</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>    </div></li> <li data-v-d1dbb6f8><a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>24</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>    </div></a></li> <li data-v-d1dbb6f8><a href="https://blog.csdn.net/rank/list/total" rel="external nofollow"  rel="external nofollow"  target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5476&quot;}" data-report-query="spm=3001.5476" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>128,997</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>    </div></a></li> <li data-v-d1dbb6f8><a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>762</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>    </div></a></li></ul></div></div></div> <div class="user-profile-body" data-v-3f0fdf46 data-v-80922f46><div class="user-profile-body-inner" data-v-3f0fdf46><div class="user-profile-body-left" data-v-3f0fdf46><div class="user-profile-aside" data-v-d487ed78 data-v-3f0fdf46><div class="user-general-info single-general-info" data-v-d487ed78><ul data-v-d487ed78><!----> <!----> <li class="user-general-info-join-csdn" data-v-d487ed78><i data-v-d487ed78></i> <span data-v-d487ed78> </span> <span class="user-general-info-key-word" data-v-d487ed78>2020-02-22</span> <span data-v-d487ed78>  CSDN</span></li></ul></div> <!----> <div class="user-achievement user-profile-aside-common-box" data-v-d487ed78><div class="aside-common-box-head" data-v-d487ed78>    </div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content" data-v-d487ed78><ul data-v-d487ed78><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022819.png)"></i>
            <div>  <span>212</span>   </div>
          </li><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022831.png)"></i>
            <div>    <span>111</span>   </div>
          </li><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022828.png)"></i>
            <div>  <span>562</span>   </div>
          '''
    #     html  
    message.attach(MIMEText(msg, 'html', 'utf-8'))
    #     
    attached_file = MIMEText(open(__file__, encoding='utf-8').read(), 'base64', 'utf-8')
    #                  
    attached_file['Content-Disposition'] = 'attachment;filename="mail.py"'
    #       
    message.attach(attached_file)
    try:
        #   QQ         
        smtp = smtplib.SMTP('smtp.qq.com')
        #   
        smtp.login(sender, password)
        #   
        smtp.sendmail(sender, receiver, message.as_string())
        print('      !')
        #      
        smtp.quit()
    except smtplib.SMTPException as e:
        print('Error!      !', e)
    
    첨부 파일 을 보 낸 메 일 실행 결과:
    在这里插入图片描述
    5.사진 을 보 내 는 메 일
    
    import smtplib
    
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    
    #      
    sender = '[email protected]'(      )
    #     (        )
    password = '123456'(      )
    #        ,    []  ,                
    receiver = ['[email protected]', ](          )
    #   related          
    message = MIMEMultipart('related')
    #         
    message['From'] = Header('     ', 'utf-8')
    #         
    message['To'] = Header('baby', 'utf-8')
    #     
    message['Subject'] = '    ,   !'
    #     
    content = MIMEMultipart('alternative')
    # html  
    msg = '''
        <p><a href='https://blog.csdn.net/weixin_46382560?spm=1011.2124.3001.5343'>     </p>
              Life goes on, learning goes on
        <p>
                  
        <img src='cid:img01'>
        </p>
          '''
    #     html  
    message.attach(MIMEText(msg, 'html', 'utf-8'))
    #     
    with open('csdn.png', 'rb') as f:
        img01 = MIMEImage(f.read())
    #         img01
    img01.add_header('Content-ID', 'img01')
    #       
    message.attach(img01)
    try:
        #   QQ         
        smtp = smtplib.SMTP('smtp.qq.com')
        #   
        smtp.login(sender, password)
        #   
        smtp.sendmail(sender, receiver, message.as_string())
        print('      !')
        #      
        smtp.quit()
    except smtplib.SMTPException as e:
        print('Error!      !', e)
    
    그림 을 보 낸 메 일 실행 결과:
    在这里插入图片描述
    이메일
    메 일 을 받 아들 이 는 데 자주 사용 되 는 프로 토 콜 은 두 가지 가 있 습 니 다.POP 3 와 IMAP 프로 토 콜 입 니 다.
    POP 3 프로 토 콜(Post Office Protocol-Version 3,즉 우체국 프로 토 콜 버 전 3):메 일 클 라 이언 트 가 서버 에 있 는 메 일 을 다운로드 할 수 있 지만 클 라 이언 트 의 작업(예 를 들 어 모 바 일 메 일,읽 은 태그 등)은 서버 에 피드백 되 지 않 습 니 다.예 를 들 어 클 라 이언 트 를 통 해 메 일의 3 통 을 받 고 다른 폴 더 로 이동 합 니 다.메 일 서버 의 이 메 일 들 은 동기 화 되 지 않 습 니 다.
    IMAP 프로 토 콜(Internet Mail Access Protocol,즉 Internet 메 일 접근 프로 토 콜):웹 메 일과 메 일 클 라 이언 트 간 의 양 방향 통신 을 제공 합 니 다.클 라 이언 트 가 변경 하면 서버 에 동기 화 됩 니 다.클 라 이언 트 가 메 일 을 작 동 하면 서버 의 메 일 도 해당 하 는 동작 을 합 니 다.
    7.POP 3 프로 토 콜 로 메 일 다운로드
    
    import poplib
    
    from email.parser import Parser
    
    #         
    username = '[email protected]'(      )
    #        (        )
    password = '123456'(      )
    #        
    pop_server = poplib.POP3('pop.qq.com')
    #              
    print(pop_server.getwelcome())
    #        
    pop_server.user(username)
    pop_server.pass_(password)
    #           ,          ,           
    print('Server stat', pop_server.stat())
    #         
    resp, mails, octets = pop_server.list()
    print(mails)
    #          (      ),     1    
    index = len(mails)
    resp, lines, octets = pop_server.retr(index)
    content = b'\r
    '.join(lines).decode('utf-8') # msg = Parser().parsestr(content) # # pop_server.dele(index) # pop_server.quit()
    실행 결과:
    b'+OK XMail POP3 Server v1.0 Service Ready(XMail v1.0)'
    Server stat (15, 50814)
    [b'1 1255', b'2 1286', b'3 1310', b'4 1398', b'5 1458', b'6 1450', b'7 1602', b'8 1633', b'9 5001', b'10 2347', b'11 2371', b'12 2267', b'13 5033', b'14 5077', b'15 17326']
    서버 에 정확하게 연결 하고 메 일 수 를 표시 하면 POP 3 프로 토 콜 을 정확하게 사 용 했 음 을 설명 합 니 다.
    파 이 썬 기반 의 상세 한 메 일 처리 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 메 일 처리 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기