日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python的email模块_python email 模块

發(fā)布時(shí)間:2024/7/23 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的email模块_python email 模块 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

import smtplib

import os

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

import traceback

import time

def send(self,content=None):

'''''

發(fā)送郵件

'''

server = None

index = 1 #郵件重試

while index < 3:

index += 1

try:

server = smtplib.SMTP_SSL("smtp.exmail.qq.com",port=465)

server.login(self.user,self.passwd)

server.sendmail("" % self.user, self.to_list + self.cc_list, self.get_attach(content=content))

server.close()

print("send email successful")

break

except Exception as e:

traceback.print_exc()

time.sleep(5)

print("send email failed")

finally:

try:

if server is not None:

server.close()

except Exception as e:

traceback.print_exc()

def get_attach(self,content=None,subtype='html'):

'''''

構(gòu)造郵件內(nèi)容

'''

attach = MIMEMultipart()

#添加郵件內(nèi)容

txt = MIMEText(content, _subtype=subtype, _charset='utf-8')

attach.attach(txt)

if self.subject is not None:

#主題,最上面的一行

attach["Subject"] = self.subject

if self.user is not None:

#顯示在發(fā)件人

attach["From"] = "Data Team" % self.user

if self.to_list:

attach["To"] = ";".join(self.to_list)#收件人列表

if self.cc_list:

attach["Cc"] = ";".join(self.cc_list)#抄送列表

if self.doc:

#估計(jì)任何文件都可以用base64,比如rar等

#文件名漢字用gbk編碼代替

name = os.path.basename(self.doc).encode("gbk")

f = open(self.doc,"rb")

doc = MIMEText(f.read(), "base64", "gb2312")

doc["Content-Type"] = 'application/octet-stream'

doc["Content-Disposition"] = 'attachment; filename="' + name +'"'

attach.attach(doc)

f.close()

return attach.as_string()

def get_jobs_descript(self):

"""

獲取任務(wù)的執(zhí)行str

:return:

"""

html =''

html += ''

html += '

'

html += ''

html += '

調(diào)度報(bào)告'

html += ''

html +=''

html +='

'

till = str(datetime.datetime.now() - self.start_time)

till = till[0:till.index(".")] #精確到秒級(jí)小數(shù)點(diǎn),然后要自己弄好,

html +='

啟動(dòng)時(shí)間:[' + self.start_time.strftime("%Y-%m-%d %H:%M:%S") +'] 結(jié)束時(shí)間:[' + self.get_end_time_str() +'] 持續(xù)時(shí)間:'+till+'

'

ss = 0

er = 0

skip = 0

run_c = 0

pl = ''

for job_name in self.job_run_:

node = self.dag_job.get_node(job_name=job_name)

if node.status == 1:

if node.is_active == False:

skip += 1

else:

ss += 1

elif node.status == -1:

er += 1

elif node.status == 0:

run_c += 1

pl += node.get_job_mail_str()

html +="

統(tǒng)計(jì) [成功:" + str(ss) +'\t錯(cuò)誤:' + str(er)+'\t跳過(guò):'+str(skip)+'\t未執(zhí)行:' + str(self.job_size - ss - er - skip)+'] 總?cè)蝿?wù)數(shù): ' + str(self.job_size)+'

'

html +='

郵件發(fā)送時(shí)間:' + str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M')) +'

'

html += '

調(diào)度報(bào)告

'

html +='

html +=''

html +='

'

html +='

狀態(tài)'

html +='

任務(wù)名'

html +='

創(chuàng)建時(shí)間'

html +='

結(jié)束時(shí)間'

html +='

持續(xù)時(shí)間'

html +='

重試次數(shù)'

html +='

重試上限'

html +='

是否跳過(guò)'

html +='

一定正確'

html +='

優(yōu)先級(jí)'

html +='

'

html +='

'

html +='

'

html += pl

html +='

'

return html

def get_job_mail_str(self):

"""

獲取發(fā)送郵件的行數(shù)

:return:

"""

sz = "

"

if self.start_time is None:

sz += "

SKIP" + self.name +''

else:

if self.status == 1:

sz += "

SUCCEED" + self.name+''

elif self.status ==-1:

sz += "

ERROR" + self.name+''

elif self.status ==0:

sz += "

RUNNING" + self.name+''

elif self.status is None:

sz += "

NOT_RUN" + self.name+''

if self.start_time is not None:

sz +='

' + self.start_time.strftime('%Y-%m-%d %H:%M:%S')+''

else:

sz +='

'

if self.end_time is not None:

sz +='

'+self.end_time.strftime('%Y-%m-%d %H:%M:%S') +''

else:

sz +='

'

if self.start_time is None or self.end_time is None:

sz +='

'

else:

plz = str(self.end_time - self.start_time)

if plz.index(':') == 1:

sz += '

0' + str(self.end_time - self.start_time)[0:7] +''

else:

sz += '

' + str(self.end_time - self.start_time)[0:8] +''

sz += '

' + str(self.retry_time) + ''

sz += '

' + str(self.retry_limit) + ''

if self.is_active:

sz +='

'

else:

sz += '

' + str(self.is_active == False) +''

if self.forver_right:

sz += '

' + str(self.forver_right == True) +''

else:

sz += '

'

sz += '

' + str(self.priority) +''

sz += ''

return sz

總結(jié)

以上是生活随笔為你收集整理的python的email模块_python email 模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。