Python 기본 상세 한 메 일 처리
Python 표준 라 이브 러 리 는 SMTP 프로 토 콜 을 실현 하기 위해 smtplib 를 제공 합 니 다.표준 라 이브 러 리 는 이메일 모듈 을 제공 하여 메 일 형식 을 구축 하 는 데 도움 을 줍 니 다.SMTP(Simple Mail Transfer Protocol,즉 간단 한 메 일 전송 프로 토 콜)는 원본 주소 에서 목적 주소 로 메 일 을 전송 하 는 규칙 으로 메 일의 중간 방식 을 제어 합 니 다.
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="{"spm":"3001.5476"}" 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="{"spm":"3001.5476"}" 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 프로 토 콜 을 정확하게 사 용 했 음 을 설명 합 니 다.
파 이 썬 기반 의 상세 한 메 일 처리 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 메 일 처리 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.