使用python调用email模块实现附件发送

需要模块:

import datetime
import time
import sys
import mimetypes
import smtplib
import email.MIMEMultipart
import email.MIMEText
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.Utils import COMMASPACE, formatdate
from email.mime.image import MIMEImage

模块安装:

模块安装:

系统默认应该都已安装这些模块,如有确认请自行安装;
pip install 模块名

脚本内容:

[root@baolin shell]# cat py_sendmail.py
#!/bin/env python
# -*- encoding: utf-8 -*-
#-------------------------------------------------------------------------------
# Purpose: 附件发送
# by baolin
#-------------------------------------------------------------------------------
import datetime
import time
import sys
import mimetypes
import smtplib
import email.MIMEMultipart
import email.MIMEText
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.Utils import COMMASPACE, formatdate
from email.mime.image import MIMEImage reload(sys)
sys.setdefaultencoding('utf8') #获取前一天日期
#month = (datetime.date.today() - datetime.timedelta(days=15)).strftime("%m")
now_time = datetime.datetime.now() # 获取当前时间
yes_time = now_time + datetime.timedelta(days=-1) # 当前时间 -1
month = yes_time.strftime('%Y-%m-%d') # 截取时间日期部分 msg=MIMEMultipart() #发邮箱
msg["From"] = "baolin2200@gmail.com" #收件箱地址,可以为多个
Tolist = ['xxxxxxxxx@qq.com','ooooooooo@qq.com',] #邮件标题
msg["Subject"] = '%s日报统计信息' %month #邮件内部内容文字
text=MIMEText(("附件内容为 %s日报信息,详情请见附件。")% month,_charset='utf-8')
msg.attach(text) #附件名由外部传入
file_name = sys.argv[1]
print(file_name)
ctype,encoding = mimetypes.guess_type(file_name)
if ctype is None or encoding is not None:
ctype = 'application/octet-stream'
maintype,subtype = ctype.split('/',1) att = MIMEImage(open(file_name, 'rb').read(),subtype)
print ctype,encoding
att["Content-Disposition"] = 'attachmemt;filename="%s"' %file_name
msg.attach(att) # 发件箱的服务器,发件箱用户密码
smtp = smtplib.SMTP()
smtp.connect("smtp.gmail.com")
smtp.starttls()
smtp.login("baolin2200@gmail.com","*********") smtp.sendmail(msg["From"],Tolist,msg.as_string())
smtp.close()

运行方式:

# 附件名如是中文,会出现乱码问题
[root@baolin shell]#python py_sendmail.py file_name

内容参考:

http://blog.csdn.net/zm2714/article/details/7993732
http://www.cnblogs.com/zhoujinyi/archive/2013/05/07/3065151.html
https://www.runoob.com/python/python-email.html

使用python调用email模块发送邮件附件的更多相关文章

  1. python调用smtplib模块发送邮件

    #!/usr/bin/env python #coding: utf-8 import smtplib from email.mime.text import MIMEText from email. ...

  2. linux下python调用c模块

    在C调用Python模块时需要初始化Python解释器,导入模块等,但Python调用C模块却比较简单,下面还是以helloWorld.c 和 main.py 做一说明:   (1)编写C代码,hel ...

  3. Python使用SMTP模块、email模块发送邮件

    一.smtplib模块: 主要通过SMTP类与邮件系统进行交互.使用方法如下: 1.实例化一个SMTP对象: s = smtplib.SMTP(邮件服务地址,端口号) s = smtplib.SMTP ...

  4. Python_使用smtplib和email模块发送邮件

    [http://blog.csdn.net/menglei8625/article/details/7721746] SMTP (Simple Mail Transfer Protocol) 邮件传送 ...

  5. python之smtplib模块 发送邮件

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #smtplib模块 发送邮件 import smtplib from email.mime.text imp ...

  6. python备份数据库并发送邮件附件

    记录下自己学习python的过程 这个是进行备份后,并发送邮件附件进行保存的功能. 相对来说比较简陋,可以自行修改,简略步骤,美化过程等. 示例代码: #!/usr/bin/env python # ...

  7. ESL python调用C模块时传递unicode字符串报错问题解决

    在是用freeswitch时利用ESL的python调用时传递字符串报错 TypeError: in method 'ESLconnection_api', argument 2 of type 'c ...

  8. Python调用C模块以及性能分析

    一.c,ctypes和python的数据类型的对应关系 ctypes type ctype Python type c_char char 1-character string c_wchar wch ...

  9. python 发送email邮件带附件

    EMAIL功能实现: 1.发送EMAIL带附件,并且带压缩文件夹做为附件 #_*_coding:utf-8_*_ import smtplib from email.mime.text import ...

随机推荐

  1. Eclipse打印GC日志

    一.生成gc.log 第一步:右键项目或文件——Run As——Run Configurations. 第二步:点击Arguments,在VM arguments中填写-Xloggc:F:/gc.lo ...

  2. 【Tomcat】CentOS7.0下安装多个Tomcat及其配置

    安装前所需环境 在开始安装Tomcat之前,需要安装环境JDK,并配置JAVA环境.如果不知道如何配置,可参考这篇博客:[Linux]CentOS7.0下安装JDK环境 Tomcat安装 Tomcat ...

  3. FAT文件系统规范v1.03学习笔记---1.保留区之 Fat32 FSInfo扇区结构和备份启动扇区

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  4. android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论【转】

    转自:https://www.cnblogs.com/deman/p/5584198.html 阅读目录 1.OpenGL & OpenGL ES 2.Android的硬件接口HAL 3.An ...

  5. vs 快捷键操作

    各个版本可能不同,以vs 2013为例. 1.调试时,调出即时窗口:[Ctrl+Alt+i] 2.注释/取消注释:[Ctrl+K Ctrl+C]/[Ctrl+K Ctrl+U]

  6. u3d常用代码小集合

    01.基本碰撞检测代码 function OnCollisionEnter(theCollision : Collision){ if(theCollision.gameObject.name == ...

  7. Mybatis--01

    mybatis 封装jdbc访问代码的一个框架 (hibernate)  ORM对象关系映射 SpringMVC:用来封装servlet的框架 (struts) Spring:体系整合框架,其他框架的 ...

  8. 持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本

    持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...

  9. 神经网络rbf

    clc; clear; close all; ld=400; %定义学习样本的数量 x=rand(2,ld); %得到一个2 * 400的一个矩阵,每个元素在0-1之间 x=(x-0.5)*1.5*2 ...

  10. ASP.NET MVC5高级编程 之 数据注解和验证

    客户端验证逻辑会对用户向表单输入的数据给出一个即时反馈.而之所以需要服务器端验证,是因为来自网络的信息都是不能被信任的. 当在ASP.NET MVC设计模式上下文中谈论验证时,主要关注的是验证模型的值 ...