python--smtplib加email带Excel、txt、PNG、MP3附件发邮件给指定邮箱(二)

python--smtplib加email带Excel、txt、PNG、MP3附件发邮件给指定邮箱(二)

      • 前言:
        • 1、python与smtp服务器之间的具体交互
        • 2、如何携带附件发送
        • 3、函数封装
        • 4、函数调用
        • 5、结果展示
        • 6、其他附件TXT、PNG、mp3的添加方法
        • 7、文末彩蛋--轻松一刻

      更多关于Python的知识请加关注哟~~。若需联系博主请私信或者加博主联系方式:
      QQ:1542334210
      微信公众号:不一样的数据分析
      微信号:ZDSL1542334210

python--smtplib加email带Excel、txt、PNG、MP3附件发邮件给指定邮箱(二)_第1张图片

更多精彩内容请关注微信公众:不一样的数据分析

前言:

       上一篇文章就提到如何使用Python的smtplib+email模块进行邮件的发送,当时做的是消息的简单发送,今天我将脚本进行修改,转变为带有附件发送到指定邮箱,今天的测试将以Excel文件作为附件进行发送测试,文章第6部分会附上如何发送TXT、PNG、mp3、mp4文件。
【PS:这里我会分几篇文章进行讲解,从发送消息–>发送excel–>发送txt–>发送图片–>发送mp3–>发送mp4–>定时发送邮件】

1、python与smtp服务器之间的具体交互

server = smtplib.SMTP_SSL("smtp.qq.com",timeout=30)   #实例化一个SMTP对象 ,传人:邮件服务地址,端口号
server.set_debuglevel(0) #是否打印出与邮箱交易的所有信息 0表示不用打印1表示打印
server.ehlo("smtp.qq.com") #使用ehlo指令向ESMTP(SMTP扩展)确认你的身份
server.login(myemail,password)  # 传入发送者邮箱地址和授权码
server.sendmail(msg['from'], msg['to'],msg.as_string()) # msg['from'] 发送人邮箱地址,msg['to'] 收件人邮箱地址,msg.as_string()中as_string()是将msg(MIMEText或MIMEMultipart对象)变为str。
server.close()  # 关闭服务

2、如何携带附件发送

# 导入模块
import smtplib
from email.mime.text import MIMEText
import warnings
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.base import MIMEBase
from email import encoders
# 执行代码部分
file_excel='D:/ZhongPstudy/AWORK_ABORD/Data/Email_zidong/朱建豪.xlsx'   # 需要发的邮箱文件路径
msg  = MIMEMultipart()  # 实例化一个对象
msg['to'] = '[email protected]'   # 接收者邮箱 请修改
msg['from'] = '[email protected]' #  发送者邮箱 请修改
msg['subject'] = "御天朱哥 请查收,来自excel发送测试邮件"  #邮件标题
part = MIMEText("邮箱发送附件-excel 给 御天朱哥")  # 邮件正文内容
msg.attach(part)
msg["Accept-Language"]="zh-CN" # 设置消息为中文
msg["Accept-Charset"]="utf-8" # 指定编码
att  =  MIMEApplication(open(file_excel,'rb').read(),'utf-8')  # 读入需要发送的excel文件
#添加附加 并且命名为.xlsx后缀文件  名字可以自取  但是后缀必须和源文件后缀相同
att.add_header('Content-Disposition', 'attachment', filename='%朱建豪.xlsx')
msg.attach(att)
server = smtplib.SMTP_SSL("smtp.qq.com",timeout=30)   #实例化一个SMTP对象  邮件服务地址,端口号
server.set_debuglevel(1)     # 设置为1表示打印出与邮箱交易的所有信息  0表示 不用打印
server.ehlo("smtp.qq.com")   #使用ehlo指令向ESMTP(SMTP扩展)确认你的身份
server.login('[email protected]',"password")  # 你的邮箱账号和授权码
server.sendmail(msg['from'], msg['to'],msg.as_string())
server.close()

       这里server.set_debuglevel(1)是打印出与邮箱交易信息,打印后你将会看到一堆只有模块和邮箱之间才看得到的东西,当然我们接下来的函数封装会不打印这些信息,就轻便许多了。

3、函数封装

def Send_Gemail(myemail,otheremail,password,file_excel,name):
    '''函数解释:自定义发邮件函数,myemail:发送者邮箱,password:发送者密码,
    otheremail:接收者邮箱,file_excel:发送的文件'''
    #邮箱件内容
    msg  = MIMEMultipart()
    msg['to'] = otheremail
    msg['from'] = myemail
    msg['subject'] = "%s 请查收,来自excel发送测试邮件"%(name)  #邮件标题
    part = MIMEText("邮箱发送附件-excel 给 %s"%(name))  # 邮件正文内容
    msg.attach(part)
    msg["Accept-Language"]="zh-CN" # 设置消息为中文
    msg["Accept-Charset"]="utf-8" # 指定编码
#     att  =  MIMEApplication(open(file_excel, 'rb').read())
    att  =  MIMEApplication(open(file_excel,'rb').read(),'utf-8')  # 读入需要发送的excel文件
#     att  =  MIMEApplication(open(file_excel,'rb').read(),'utf-8')  # 发送图片
#     att["Content-Type"] = 'application/octet-stream'
    #添加附加 并且命名为.xlsx后缀文件  名字可以自取  但是后缀必须和源文件后缀相同
    att.add_header('Content-Disposition', 'attachment', filename='%s.xlsx'%(name)) 
#     att["Content-Disposition"] ='attachment; filename="sendmail.xlsx"'
    msg.attach(att)
    server = smtplib.SMTP_SSL("smtp.qq.com",timeout=30)   #实例化一个SMTP对象  邮件服务地址,端口号
    server.set_debuglevel(1)     # 设置为1表示打印出与邮箱交易的所有信息  0表示 不用打印
    server.ehlo("smtp.qq.com")   #使用ehlo指令向ESMTP(SMTP扩展)确认你的身份
    server.login(myemail,password)
    server.sendmail(msg['from'], msg['to'],msg.as_string())
    server.close()
    print("邮件发送成功!")

4、函数调用

# 这里就可以发送任意的excel文件,只要路径读取的正确,就会成功发送到邮箱!
file_excel='D:/ZhongPstudy/AWORK_ABORD/Data/Email_zidong/朱建豪.xlsx'
Send_Gemail('[email protected]','[email protected]','uajsuycdnxppba',file_excel,'御天朱哥')

5、结果展示

python--smtplib加email带Excel、txt、PNG、MP3附件发邮件给指定邮箱(二)_第2张图片

6、其他附件TXT、PNG、mp3的添加方法

       Python发邮件的速度是很快的,而且这里的附件你可以更换为任意文件,TXT、JPG,PNG、mp3、MP4均可,只需要将文件路径file_excel修改为你需要发送的文件路径,然后再将att.add_header('Content-Disposition', 'attachment', filename='%s.xlsx'%(name))的后缀修改为对应发送的后缀(如果是记事本就修改为“.txt”,图片就修改为“.PNG”)

7、文末彩蛋–轻松一刻

       大家都知道我有一好朋友小熊,他初中的时候特别爱学,我们不是学到物理课嘛,老师说生活中很多东西都会热胀冷缩,于是他回家就问他爸爸:“爸爸,什么是热胀冷缩?”他爸爸说:“就是物体有一个属性,热了体积会变大,冷了就会缩小!”他答到:“那人有吗?”他爸爸沉默着红着脸回答:“…也有…”。最后小熊说道:“那老妈那么胖,你为什么不把妈妈塞进冰箱冻瘦一点呢?..”

        今天到这里就结束啦~这里是Jeruser python自动化栏目,让你体验不一样的Python数据分析魅力,如何将工作变得有趣,请持续关注我。谢谢观看我是Jetuser–data

你可能感兴趣的:(Python--自动化,python-anaconda)