from datetime import datetimeimport smtplib import email.mime.text import MIMEText # 构建邮件头 from email.header import Header from email.mime.multipart import MIMEMultipart def main(): #today = datetime.today() #date_str = today.strftime("%Y-%m-%d") #获取当天时间,格式2023-10-01 #发信方的信息:发信邮箱,QQ邮箱授权码(QQ邮箱需要申请授权码,其他邮箱基本只需要邮箱登录密码) from_addr = '1200000@qq.com' password = 'behsdfkjha' #收信方邮箱 使用列表可一个或多个 to_addrs =[ '23432@qq.com','123@qq.com'] #抄送方邮箱 cc_list = ['2789@qq.com'] #收信方+抄送方,后面server.sendmail方法用到 to_cc = to_addrs + cc_list #发信服务器 smtp_server = 'smtp.qq.com' #此为qq邮箱服务器地址,自己确定发件方邮箱的服务器地址 # 创建一个带附件的邮件实例 message=MIMEMultipart() #邮箱正文内容 success_text = "正文内容" mail_inside_success = MIMEText(success_text,'plain','utf-8') #传入文本,文本类型(plain)、文本编码 #设置邮件头信息 message['From'] = Header(from_addr) #发送者 message['TO'] = Header(",".join(to_addrs)) #接收者,因为是多个邮件,所以需要用join message['Cc'] = Header(",".join(cc_list)) #抄送者 message['Subject'] = Header(f'{date_str}巡检报告') #标题 message.attach(mail_inside_success) #传入邮件正文的内容 #通过MIMEText构造附件文本txt,excel等
#Content-Type(内容类型)定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件
#application/octet-stream:二进制流数据(如常见的文件下载)
# Content-Disposition激活附件下载对话框。Content-Disposition有两种属性:inline 和 attachment
# inline:默认值,将文件内容直接显示在页面;
# attachment:弹出对话框,让用户下载
# filename:定义下载文件的文件名。 attr1=MIMEText(open('D:/go/python/自动化巡检/故障测试表.xlsx','rb').read(),'base64','utf-8') #读取本地xlsx,路径用/不要 attr1["content_Type"]='application/octet-stream' attr1.add_header('Content-Disposition', 'attachment', filename='自定义名称.xlsx') message.attach(attr1)
#通过MIMEImage构造附件2图片
att2=MIMEImage(open('E:/path/filename.jpg','rb').read())
att2["Content-Type"]='application/octet-stream'
att2.add_header('Content-Disposition', 'attachment', filename='fujian3.jpg')
message.attach(att2)
#通过MIMEAudio构造附件3。MEMEAudio需要定义音频类型
att3=MIMEAudio(open('E:/path/filename.mp3','rb').read(),'audio')
att3["Content-Type"]='application/octet-stream'
att3.add_header('Content-Disposition', 'attachment', filename='fujian4.mp3')
message.attach(att3) try: #开启发信服务,这里使用的是非加密传输 server = smtplib.SMTP(smtp_server,25) #登录发信邮箱 server.login(from_addr,password) #发送邮件 server.sendmail(from_addr,to_cc,message.as_string()) #发送方,所有收件人(包含抄送者),之前message构建的邮件信息 #关闭服务器 server.quit() print("邮件发送成功") except smtplib.SMTPException as e: print('邮件发送失败{e}')
if __name__ == '__main__':
main()
__EOF__
本文作者: 卡卡罗特,你来了 本文链接: https://www.cnblogs.com/liweifeng888/p/17777211.html 关于博主: 评论和私信会在第一时间回复。或者直接私信我。 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...