資源簡介
基于SMTP的自動發郵件的設計實現(Python版),很小的程序,適合初學者。
代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
from?email?import?encoders
from?email.header?import?Header
from?email.mime.text?import?MIMEText
from?email.utils?import?parseaddr?formataddr
import?smtplib
from?email.mime.base?import?MIMEbase
from?email.mime.multipart?import?MIMEMultipart
def?_format_addr(s):
????name?addr?=?parseaddr(s)?????#解析字符串中的email地址
????return?formataddr((Header(name?‘utf-8‘).encode()?addr))
from_name=‘發件人‘
from_addr?=?‘rg...4@163.com‘
password?=?‘r...4‘
to_name=‘anyone‘
to_addr?=?‘10...@qq.com‘
#?to_addr?=?‘ren...@gmail.com‘
smtp_server?=?‘smtp.163.com‘
smtp_port?=?25
title=‘網絡‘
#?content=u‘‘‘%s,這是...發的郵件,你看到了嗎?‘‘‘
content=u‘‘‘Dear??%slang=EN-US>
Hello,
‘‘‘;
#?![]()
#?msg?=?MIMEText((content?%?(to_name))?‘plain‘?‘utf-8‘)
#?msg?=?MIMEText((content%(to_name))?‘html‘?‘utf-8‘)
msg?=?MIMEMultipart()
#?郵件正文是MIMEText:
msg.attach(MIMEText((content%(to_name))?‘html‘?‘utf-8‘));
#?添加附件就是加上一個MIMEbase,從本地讀取一個圖片:
with?open(‘./test.pdf‘?‘rb‘)?as?f:
????#?設置附件的MIME和文件名,這里是png類型:
????#?mime?=?MIMEbase(‘image‘?‘png‘?filename=‘test.png‘)
????mime?=?MIMEbase(‘application‘?‘pdf‘?filename=‘test.pdf‘)
????#?加上必要的頭信息:
????mime.add_header(‘Content-Disposition‘?‘attachment‘?filename=‘test.pdf‘)
????mime.add_header(‘Content-ID‘?‘<0>‘)
????mime.add_header(‘X-Attachment-Id‘?‘0‘)
????#?把附件的內容讀進來:
????mime.set_payload(f.read())
????#?用base64編碼:
????encoders.encode_base64(mime)
????#?添加到MIMEMultipart:
????msg.attach(mime)
msg[‘From‘]?=?_format_addr(from_name+‘?<%s>‘?%?from_addr)
msg[‘To‘]?=?_format_addr(to_name+‘?<%s>‘?%?to_addr)
msg[‘Subject‘]?=?Header(title?‘utf-8‘).encode()
server?=?smtplib.SMTP(smtp_server?smtp_port)
server.set_debuglevel(1)
server.login(from_addr?password)
server.sendmail(from_addr?[to_addr]?msg.as_string())
server.quit()
#?def?sendmsg(recipientnamerecipientaddr):
#?????#msg?=?MIMEText(‘hello?send?by?Python...‘?‘plain‘?‘utf-8‘)
#?????msg?=?MIMEText((content?%?(recipientname))?‘html‘?‘utf-8‘)
#?????msg[‘From‘]?=?_format_addr(u‘%s?<%s>‘?%?(from_namefrom_addr))
#?????msg[‘To‘]?=?_format_addr(u‘%s?<%s>‘?%?(recipientnamerecipientaddr))
#?????msg[‘Subject‘]?=?Header(title?‘utf-8‘).encode()
#
#?????server?=?smtplib.SMTP(smtp_server?25)
#?????#server.set_debuglevel(1)
#?????server.login(from_addr?password)
#?????server.sendmail(from_addr?[recipientaddr]?msg.as_string())
#?????server.quit()
- 上一篇:Python高級編程和異步IO并發編程
- 下一篇:python登陸
評論
共有 條評論