使用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. 引入第三方SDK allowBackup value不一致引起的编译异常

    项目中要引入一个客服的SDK,项目中 <application android:name=".AppApplication" android:allowBackup=&quo ...

  2. APACHE - CXF 入门详解

    ref: https://www.cnblogs.com/hoojjack/p/6724659.html

  3. 修改Spring Social默认提交地址

    ⒈ package cn.coreqi.social.config; import org.springframework.social.security.SocialAuthenticationFi ...

  4. 【keepalived】CentOS7.0下安装教程

    安装前所需环境 keepalived安装之前,需要环境:wget.gcc.pcre.openssl.zlib.popt-devel 1,wget:用于从外网上下载插件 wget安装命令:yum -y ...

  5. Go语言模拟实现简单的区块链

    一.创建项目 按照Go语言最佳实践的思路, 在工作空间下的src目录下创建 github.com/hangzhou-huxin/blokcchain目录作为我们的项目目录,然后用GoLand工具选中这 ...

  6. http和ftp下载的区别

    HTTP和FTP是两种网络传输协议的缩写,FTP是File Transportation Protocol(文件传输协议)的缩写,而HTTP则是Hyper Text Transportation Pr ...

  7. 【SCOI2010】序列操作

    各种繁琐的线段树标记操作...赤裸裸的码农题. 调了一个晚上,最后写篇题解. 题解亮点:代码短,~~跑得慢(连第一页都没挤进去)~~ 其实我跟你们说啊,代码短是好事~~(这里不是说压行好,我的代码不压 ...

  8. Cinder模块学习

    理解 Cinder 架构 - 每天5分钟玩转 OpenStack(45)   从本节开始我们学习 OpenStack 的 Block Storage Service,Cinder 理解 Block S ...

  9. MySQL - 查看慢SQL

    查看MySQL是否启用了查看慢SQL的日志文件 (1) 查看慢SQL日志是否启用 mysql> show variables like 'log_slow_queries'; +-------- ...

  10. C语言实现程序跳转到绝对地址0x100000处执行

    嵌入式笔试题:想让程序跳转到绝对地址0x100000处执行,该如何做? 请详细解释一下所给的答案: 网上看到有如下答案: *((void(*)(void))0x100000)(); 经过在VC++6. ...