使用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. CentOS(Linux)中解决MySQL乱码

    环境:CentOS 6.3.mysql5.1 Centos 6.3在上安装mysql client和server之后,出现乱码,不得不修改编码. 注意: 关于utf8和gbk的区别详细见:linux中 ...

  2. java 编程思想

    博主介绍了很多Java的基础知识,很适合初学者. http://blog.csdn.net/iaiti/article/details/38260599

  3. 微信小程序采坑(一)

    1.微信小程序如何让text内容空格 <text decode="{{true}}" space="{{true}}">  </text> ...

  4. zabbix3监控php-fpm的状态

    php-fpm和nginx一样内建了一个状态页,对于想了解php-fpm的状态以及监控php-fpm非常有帮助 . 启用php-fpm状态功能 [root@node1:~]# vim /usr/loc ...

  5. 缓存系列之四:redis持久化与redis主从复制

    一:redis 虽然是一个内存级别的缓存程序,即redis 是使用内存进行数据的缓存的,但是其可以将内存的数据按照一定的策略保存到硬盘上,从而实现数据持久保存的目的,redis支持两种不同方式的数据持 ...

  6. percona-xtrabackup工具实现mysql5.6.34的主从同步复制

    percona-xtrabackup工具实现mysql5.6.34的主从同步复制 下载并安装percona-xtrabackup工具 # wget https://www.percona.com/do ...

  7. JS:判断是否是移动端

    通过User-Agent判断 代码: if(navigator.userAgent.match(/mobile/i)) { //业务层代码 $('body').removeClass("si ...

  8. Day8--------------ssh服务

    ---恢复内容开始--- 远程管理 ssh服务端 oppenssh-server ssh客户端 oppenssh-clients Xshell 开启服务端 service sshd status 点击 ...

  9. 21)django-csrf(跨站请求伪造)

    一:目录 1)简介及无CSRF时存在隐患 2)csrf原理 3)csrf 设置 4)Form提交(CSRF) 5)Ajax提交(CSRF) CSRF请求头 X-CSRFToken 二:csrf简介 c ...

  10. ORACLE 字段AES算法加密、解密

    ORACLE 字段AES算法加密.解密(解决中文乱码问题)2014年02月12日 17:13:37 华智互联 阅读数:97971.加解密函数入口 CREATE OR REPLACE FUNCTION ...