代码:
# @Time : 2022-05-27 11:19
# @Author : huxintao
# @Site : kaishustory.com
# 脚本迁移修改时间:2022-12-16
# 脚本迁移修改人:wangxuetao
"""
视频数据日报,自动邮件发送程序
"""
import importlib,sys
importlib.reload(sys)
#修改系统默认编码。
#sys.setdefaultencoding('utf8')
import datetime, base64
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
from HTMLTable import HTMLTable
# import com.kinlin.aliyun.util.PhoneUtils as phoneUtil
def send_email(html, date):
sender = "****@****.com"
code = "****"
server = '****.****.qq.com:****'
receiver = ['****@****.com']
#cc = ['bigdata@ksjgs.com']
cc = []
# 构造邮件body
message = MIMEMultipart("alternative", None, [MIMEText(html, 'html')])
message['Subject'] = '视频内容数据日报-' + date
message['From'] = sender
message['To'] = ",".join(receiver)
message['Cc'] = ",".join(cc)
print('---------message构建成功---------')
# 发送动作
server = smtplib.SMTP_SSL(server)
server.ehlo()
server.login(sender, code)
server.sendmail(sender, receiver + cc, message.as_string())
server.quit()
print('---------发送完成---------')
if __name__ == '__main__':
yesterday = (datetime.date.today() + datetime.timedelta(-1)).strftime("%Y-%m-%d")
column1 = ("日期", "播放次数", "完播率", "售卖单数", "收入")
with o.execute_sql('select dt, album_play_cnt, concat(round(album_finish_play_rto * 100, 2), "%") as album_finish_play_rto , order_cnt, amt from kaishu_bigdata.ads_xzs_car_city_play_order_sum_di where dt=date_sub(current_date(),1)').open_reader() as reader4:
rows = reader4.raw.split('\n')
#['"dt","album_play_cnt","album_finish_play_rto","order_cnt","amt"', '"2022-12-14",1296,"52.62%",3.0,75.0', '']
print(rows[0:10])
l = []
for row in rows:
new_str = row.replace('"', '')
new_str.split(",")
t = tuple(new_str.split(","))
l.append(t)
#('dt', 'album_play_cnt', 'album_finish_play_rto', 'order_cnt', 'amt')
#('2022-12-14', '1296', '52.62%', '3.0', '75.0')
#('',)
print(t)
del l[0]
l.pop()
res_data = tuple(l)
print(res_data)
#(('2022-12-14', '1296', '52.62%', '3.0', '75.0'),)
l1 = len(res_data)
# 判断当天是否有数据
if len(column1) == 0:
column1 = (('没有统计到昨日数据'))
# 创建报表
table = HTMLTable(caption='汽车城大冒险每日数据')
# 创建报表header
table.append_header_rows((
# ("日期", "播放次数", "完播率", "售卖单数", "收入"),
column1,
))
# 添加td
table.append_data_rows(res_data)
# 设置字体大小
table.caption.set_style({
'font-size': '16px',
})
table.set_style({
'border-collapse': 'collapse',
'word-break': 'keep-all',
'white-space': 'nowrap',
'font-size': '14px',
})
table.set_cell_style({
'border-color': '#A9A9A9',
'border-width': '1px',
'border-style': 'solid',
'padding': '5px',
})
# 表头样式
table.set_header_row_style({
# 'color': '#fff',
'background-color': '#D3D3D3',
'font-size': '14px',
})
# 覆盖表头单元格字体样式
table.set_header_cell_style({
'padding': '10px',
})
html = table.to_html()
# 四张表拼接html
if res_data != () :
send_email(html, yesterday)
else:
phoneUtil.call_phone("视频邮件发送失败,失败原因,视频引用报表数据异常,请及时核对")
phoneUtil.call_ding(
"视频邮件发送失败\n\n失败原因,视频引用报表数据异常,请及时核对\n\n汽车城大冒险每日数据:%s" % (
l1), 1)
phoneUtil.call_feishu(
"视频邮件发送失败\n\n失败原因,视频引用报表数据异常,请及时核对\n\n汽车城大冒险每日数据:%s" % (
l1), 1)
邮件: