上一篇文章就提到如何使用Python的smtplib+email模块进行邮件的发送,当时做的是消息的简单发送,今天我将脚本进行修改,转变为带有附件发送到指定邮箱,今天的测试将以Excel文件作为附件进行发送测试,文章第6部分会附上如何发送TXT、PNG、mp3、mp4文件。
【PS:这里我会分几篇文章进行讲解,从发送消息–>发送excel–>发送txt–>发送图片–>发送mp3–>发送mp4–>定时发送邮件】
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() # 关闭服务
# 导入模块
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)
是打印出与邮箱交易信息,打印后你将会看到一堆只有模块和邮箱之间才看得到的东西,当然我们接下来的函数封装会不打印这些信息,就轻便许多了。
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("邮件发送成功!")
# 这里就可以发送任意的excel文件,只要路径读取的正确,就会成功发送到邮箱!
file_excel='D:/ZhongPstudy/AWORK_ABORD/Data/Email_zidong/朱建豪.xlsx'
Send_Gemail('[email protected]','[email protected]','uajsuycdnxppba',file_excel,'御天朱哥')
Python发邮件的速度是很快的,而且这里的附件你可以更换为任意文件,TXT、JPG,PNG、mp3、MP4均可,只需要将文件路径file_excel
修改为你需要发送的文件路径,然后再将att.add_header('Content-Disposition', 'attachment', filename='%s.xlsx'%(name))
的后缀修改为对应发送的后缀(如果是记事本就修改为“.txt”,图片就修改为“.PNG”)
大家都知道我有一好朋友小熊,他初中的时候特别爱学,我们不是学到物理课嘛,老师说生活中很多东西都会热胀冷缩,于是他回家就问他爸爸:“爸爸,什么是热胀冷缩?”他爸爸说:“就是物体有一个属性,热了体积会变大,冷了就会缩小!”他答到:“那人有吗?”他爸爸沉默着红着脸回答:“…也有…”。最后小熊说道:“那老妈那么胖,你为什么不把妈妈塞进冰箱冻瘦一点呢?..”
今天到这里就结束啦~这里是Jeruser python自动化栏目,让你体验不一样的Python数据分析魅力,如何将工作变得有趣,请持续关注我。谢谢观看我是Jetuser–data