發電子郵件
發電子郵件: smtp smtps
服務器: postfix sendmail qmail
客戶端: web ,foxmail , outlook
收電子郵件: pop3 pip3s imap imaps
服務器: devocote
客戶端: web ,foxmail , outlook
現生活 : 物體本身 --> 發信人發信人主題 --> 快遞公司 --> 放到收信的人家裏
郵件: 電子郵件 --> 發信人發信人主題 --> smpt服務器 --> 放到收信人郵箱裏
收信人 --> 進入自己的郵箱查看,使用pop協議
python :
寫信的工具: email
發信的工具: smtplib
因爲大公司都對郵件作了安全限制,所以一般使用第三方工具無法使用帳號和密碼登錄。
同時如果希望第三方可以使用smtp pop 服務還要開啓權限(smtp服務器,授權碼)
示例1: 發送純文本郵件
from email.mime.text import MIMEText
import smtplib
server = 'smtp.163.com'
user = '[email protected]'
to_user = user
passwd = '你的授權碼'
subject = '沁園春·雪'
body = r'''北國風光,千里冰封,萬里雪飄。
望長城內外,惟餘莽莽;大河上下,頓失滔滔。
山舞銀蛇,原馳蠟象,欲與天公試比高。
須晴日,看紅裝素裹,分外妖嬈。
江山如此多嬌,引無數英雄競折腰。
惜秦皇漢武,略輸文采;唐宗宋祖,稍遜風騷。
一代天驕,成吉思汗,只識彎弓射大雕。
俱往矣,數風流人物,還看今朝。'''
msg = MIMEText(body)
msg['From'] = user
msg['To'] = to_user
msg['Subject'] = subject
tool = smtplib.SMTP()
tool.connect(server)
#tool.starttls()
tool.login(user,passwd)
tool.sendmail(user,to_user,msg.as_string())
tool.close()
示例2: 發送含圖片和附件的郵件
import smtplib
# MIMEMultipart可以將多個MIME對象進行封裝
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
server = 'smtp.163.com'
username = '[email protected]'
password = '授權碼'
subject = r'張宗昌相比,古人的打油詩真是弱爆了888'
to_user = '[email protected]'
image_id = 'testimg'
image_path = 'baidu.png'
attach_path = 'abc.xlsx'
body = r'<font color=red> 這是一個測試:<br><img src="cid:{}"><br>詳情見附件.</font>'.format(image_id)
#添加圖片函數
def addimg(src,imgid):
with open(src,'rb') as fp:
msgImage = MIMEImage(fp.read())
msgImage.add_header('Content-ID',imgid)
return msgImage
msg = MIMEMultipart('mixed')
msgtext = MIMEText(body,"html","utf-8")
msg.attach(msgtext)
msg.attach(addimg(image_path,image_id))
#創建附件
attachment = MIMEText(open(attach_path,'rb').read(),'base64','utf-8')
attachment["Content-Type"] = "application/octet-stream"
#指定郵件中附件的名字
attachment["Content-Disposition"] = 'attachment; filename="{}"'.format(attach_path)
msg.attach(attachment)
msg['Subject'] = subject
msg['From'] = username
msg['To'] = to_user
tool = smtplib.SMTP()
tool.connect(server)
tool.login(username, password)
tool.sendmail(username, to_user, msg.as_string())
tool.close()
生成excel文件
用途: 銀行,支付寶等下載一年的消費情況
生成報表
如何生成excel文件
csv : 文件可以當成一種excel格式,不過是純文本的
XlsxWriter: 這個支持功能強大
其它python的excel模塊
安裝:
pip3 install XlsxWriter
示例1:
import xlsxwriter
workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet('abc')
worksheet.write('C2','name')
worksheet.write('D2','語文')
worksheet.write('E2','數學')
worksheet.write('F2','英文')
workbook.close()
示例2:
import xlsxwriter
workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()
#第一行
worksheet.write('C2','name')
worksheet.write('D2','語文')
worksheet.write('E2','數學')
worksheet.write('F2','英文')
#第二行
row2 = ['libai',100,90,80]
worksheet.write_row('C3',row2)
#第三行
row3 = ['quyuan',90,90,90]
worksheet.write_row(4-1,3-1,row3)
示例三:
import xlsxwriter
data = [
["name","語文","數學","英文","平均分"],
["libai",100,90,80,],
["quyuan",90,90,70,]
]
workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format()
bold.set_bold()
bold_red = workbook.add_format()
bold_red.set_bold()
bold_red.set_font_color('red')
init = (12,8)
for i in range(1,len(data)):
tmp = data[i][1:]
avg = sum(tmp) / len(tmp)
avg = '{0:.1f}'.format(avg)
data[i].append(avg)
for j in range(len(data)):
row = init[0] + j
col = init[1]
if j == 0:
worksheet.write_row(row,col,data[j],bold_red)
else:
line = data[j]
for col_tmp in range(col,col+len(line)):
if col_tmp == col:
worksheet.write(row,col_tmp,line[col_tmp-col],bold)
else:
worksheet.write(row,col_tmp,line[col_tmp-col])
workbook.close()