Python选择多个本地文件以附件发送到Email

Python Email 发送多个附件

起因

邮箱是最普遍的“跨平台”的信息储存节点。应能抓取网页、或者附件发送本地文件,以便各个终端共享信息。 
最终实现自动抓取页面推送到邮箱;将笔记、日程以附件形式发送到邮箱。

工具和准备

  • 编辑器:Sublime 3
  • 语言:Python v2.7.11
  • OS:Windows 7 64位

网络搜索 "Pythonemail 发送附件" 得到基础模板。修改调试得到如下代码:

  1. # -*- coding: utf-8 -*-
  2. # Python 2.7.11 Windows 7 64位下测试通过
  3. import smtplib,os,sys,mimetools
  4. from email.mime.text import MIMEText
  5. from email.mime.base import MIMEBase
  6. from email.mime.multipart import MIMEMultipart
  7. from email import encoders
  8. class tMail:
  9. from_mail=‘[email protected]‘
  10. to_mail=‘[email protected]‘
  11. msg = MIMEMultipart()
  12. def genMail(self,message,files):
  13. msg= self.msg
  14. msg[‘From‘]=self.from_mail
  15. msg[‘To‘]=self.to_mail
  16. msg[‘Subject‘]=‘myMail ‘
  17. prts = [] # 附件
  18. fnames = [] # 文件名
  19. # 遍历附件文件
  20. for f in files:
  21. part = MIMEBase(‘application‘, ‘octet-stream‘)
  22. try:
  23. data = f.read( )
  24. ahead = ‘attachment; filename="%(basename)s"‘ %{‘basename‘:os.path.basename(f.name).encode(‘gbk‘)}
  25. part.set_payload(data)
  26. encoders.encode_base64(part)
  27. part.add_header(‘Content-Disposition‘, ahead)
  28. prts.append(part)
  29. finally:
  30. f.close( )
  31. fnames.append(f.name)
  32. st = ‘\t‘.join(fnames)
  33. # 邮件正文
  34. content=MIMEText(st.encode(‘gbk‘),‘html‘,‘gbk‘)
  35. msg.attach(content)
  36. # 邮件附件
  37. for z in prts:
  38. msg.attach(z)
  39. self.msg = msg
  40. def sendMail(self):
  41. server=smtplib.SMTP(‘smtp.youremail.com‘,"25")
  42. server.docmd(‘ehlo‘,‘[email protected]‘)
  43. server.login(‘[email protected]‘,‘yourpassword‘)
  44. server.sendmail(self.from_mail,self.to_mail,self.msg.as_string())
  45. server.quit()
  46. if __name__ == ‘__main__‘:
  47. # 选择多个文件
  48. import tkFileDialog
  49. filepaths = tkFileDialog.askopenfiles(mode=‘rb‘)
  50. # 将文件以附件的形式发送到指定邮箱
  51. client = tMail()
  52. client.genMail(‘<h4>this is a mail</h4>‘,filepaths)
  53. client.sendMail()
  54. print ‘Mail send complete‘

null

时间: 2024-10-09 20:13:35

Python选择多个本地文件以附件发送到Email的相关文章

python获取outlook导出eml文件中附件代码

background: 离职,公司邮箱是一直从浏览器来访问的,所以邮件在本地保存不了.如果没有附件的话可以直接用word打开.但是有附件就会打开出错. 同时导出也只能是eml格式 其实里边就是文本信息,邮件发送也是这些文本. 所以就很简单了 复用了以前 的代码 #!/usr/bin/env python #encoding=utf-8 """ Copyright (c) 2012 ekse <[email protected]> All rights reserv

mac下用scp命令实现本地文件与服务器Linux文件之间的相互传输

例如:scp /Users/kizaki/Desktop/XX.mp4 [email protected]:/usr/FHome/Video 不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是采用samba服务,类似Windows文件copy 的方式来操作,比较简洁方便. 第三种就是利用scp命令来进行文件复制. 下面来介绍一下scp的复制 查看s

详细解释 使用FileReference类加载和保存本地文件

一般而言,用户不希望web浏览器中运行的应用程序访问电脑硬盘里的文件.然而,随着基于浏览器(browser-based)的富因特网应用程序的增多,一些应用程序迫切需要访问用户所选择的文件,或者将文件保存到用户所选择的位置.支持FileReference类的Adobe Flash Player版本允许ActionScript应用程序将用户所选择的文件上传到服务器,或者从服务器下载文件到用户所选择的位置.然而,在Flash Player 10之前的版本中,除非您先将数据传送到服务器,否则无法在应用程

JS打开选择本地文件的对话框

方法一: 在定义的form中添加以下javascript代码: {             anchor : '95%',             xtype: 'fileuploadfield',             id: 'form-file',             emptyText: '请选择',             fieldLabel: '上传附件',             name: 'meetingAffix',             buttonText: '

selenium2 python自动化测试之利用AutoIt工具实现本地文件上传

本人在学习基于python语言的selenium2自动测试方法的过程中,发现涉及本地上传文件的测试时,selenium2在定位本地window窗口的对象(元素)上能力有限.当上传按钮使用的是input标签时,可以使用send_keys()方法添加本地文件路径轻松实现,但有的上传控件使用的不是input元素,这个时候send_keys()方法是行不通的.经过网上搜索加上自己实践,总结出一个非常简单而有效的方法--借用AutoIt工具实现自动化本地上传文件,在此与大家分享. 1.AutoIt介绍及安

python中关于本地文件的API

Python中关于本地文件的API */--> Python中关于本地文件的API #TITLE: python中关于本地文件的API #KEYWORDS: Python,文件,路径 #DATE: Fri Jul 1 21:24:04 2016 在Python中,文件操作主要来自os模块,主要方法如下: 函数 描述 os.listdir(dirname) 列出dirname下的目录和文件 os.getcwd() 获得当前工作目录 os.curdir 返回当前目录('.') os.chdir(di

SAP本地文件策略(导EXCEL选择拒绝后处理)

导出EXCEL意外选择了拒绝+记住选择,这样的话在本地电脑就导不出文件了,如下图: 解决办法有2个: 1,修改导出文件的本地策略 :Alt+F12 ->选项->安全性->安全设置->安全配置对话框 找到刚才因为拒绝产生的两个本地文件拒绝访问设置,双击,将操作改为‘允许’...应用,确定.返回界面就可以接着导数据了 2.修改后缀文件安全策略 同样找到Alt+F12 ->选项->安全性->安全设置->安全配置对话框 点击插入->类型选择文件扩展名 对象输入

【.Net】在WinForm中选择本地文件

相信很多朋友在日常的编程中总会遇到各钟各样的问题,关于在WinForm中选择本地文件就是很多朋友们都认为很难的一个学习.net的难点, 在WebForm中提供了FileUpload控件来供我们选择本地文件,只要我们将该控件拖到页面上了,就已经有了选择本地文件的功能了.而在 WinForm中,并没有为我们提供集成该功能的控件,但为我们提供了OpenFileDialog类,我们可以利用该类来打开与选择本地文件. OpenFileDialog类,提供了提示用户打开文件的功能,它有如下属性和方法: 属性

通过映射方式把本地文件放入服务器方法

如果希望把本地计算机上的一个文件,上传到某个服务器上,可以通过映射网络驱动器的方式把本地文件存入远程服务器.方法如下: 1. 把想要上传的文件放入一个文件夹下,文件夹取名最好简短,以便记忆和输入.然后右键点击该文件夹,选取“共享”-“特定用户”. 2. 下面这个窗口就是选择希望对哪些用户开放共享文件夹,默认有Administrator管理员用户和当前用户,可以直接点击“共享”,也可以另外添加其他本地用户,也可以修改相应的访问权限.这里不做修改,直接点击“共享”. 3. 点击“共享”之后,该文件夹