Send Email in Python

less than 1 minute read

Published:

This is my personal notes for sending email in python.

Introduction

python 发送邮件有多种方式,其中最常用的有smtp方式和yagmail, 下面对yagmail发邮件的方法进行介绍

实例展示

def content_trans(gaps):
    d={}
    keys=sorted(gaps.keys())
    trans_keys=list(map(lambda x: transdic.get(x),keys))
    values=[gaps[k] for k in keys]
    d['指标'],d['前天值'],d['昨天值'],d['变化']=trans_keys,[u[0] for u in values],[u[1] for u in values],[u[2] for u in values]
    df=pd.DataFrame(d)
    df=df[['指标','前天值','昨天值','变化']]
    return df


def merge_gaps():
    df1=content_trans(gap_s2lpre_overall)
    df2=content_trans(gap_s2lpre_avg)
    df3=content_trans(gap_s2lpre_CTR)
    return pd.concat([df1, df2, df3], axis=0).to_html(index=False) #将df转成html


def send_mail():

    # 链接邮箱服务器
    yag = yagmail.SMTP(user="xxxxxxx@qq.com", password="daqshioedqimbxxx", host='smtp.qq.com') #注意这里的password不是QQ密码,而是开启smpt服务后获得的授权码

    # 邮箱正文
    html=merge_gaps()
    contents = ['展现指标',html]

    # 发送邮件
    yag.send('xxxxx@qq.com', 'subject', contents)

    # 多用户 发送邮件
    # yag.send(['aa@126.com', 'bb@qq.com', 'cc@gmail.com'], 'subject', contents)

这里content的内容可以是list存储的普通字符串文本, 也可以使一个或者多个html文件
html可以从df很方便的转换, 转换后变成html的表格形式