`
greatghoul
  • 浏览: 146870 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

python发送文件夹内容到邮箱

阅读更多

由于我经常需要备份文件夹下的内容到邮件里面,每个打开邮件,上传文件,发送,太过麻烦,其实每次发送的文件都是放在固定位置的,只是邮件标题不同而已,于是用 python 为自己写了个发送文件到邮箱的小工具,在任意目录下执行该脚本,并指定邮件标题,就将指定文件夹下的文件发送到邮箱中备份起来 。

 

#!/usr/bin/env python
# coding: utf-8

from smtplib import SMTP, quotedata, CRLF, SMTPDataError
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
from sys import stderr, stdout
import os
import sys

class ExtendedSMTP(SMTP):
    def data(self, msg):
        self.putcmd("data")
        (code,repl)=self.getreply()
        if self.debuglevel >0 : print>>stderr, "data:", (code,repl)
        if code != 354:
            raise SMTPDataError(code,repl)
        else:
            q = quotedata(msg)
            if q[-2:] != CRLF:
                q = q + CRLF
            q = q + "." + CRLF

            # begin modified send code
            chunk_size = 2048
            bytes_sent = 0

            while bytes_sent != len(q):
                chunk = q[bytes_sent:bytes_sent+chunk_size]
                self.send(chunk)
                bytes_sent += len(chunk)
                if hasattr(self, "callback"):
                    self.callback(bytes_sent, len(q))
            # end modified send code

            (code,msg)=self.getreply()
            if self.debuglevel >0 : print>>stderr, "data:", (code,msg)
            return (code,msg)

def callback(progress, total):
    percent = 100. * progress / total
    stdout.write('\r')
    stdout.write("%s bytes sent of %s [%2.0f%%]" % (progress, total, percent))
    stdout.flush()
    if percent >= 100: stdout.write('\n')

def sendmail(subject):
    MAIL_FROM = 'mymail@qq.com'
    MAIL_TO = ['mymail@qq.com']
    BAK_DIR = '/path/to/bak/folder'

    msg = MIMEMultipart()
    msg['From'] = MAIL_FROM
    msg['Subject'] = subject

    msg.attach( MIMEText('test send attachment') )
    for filename in os.listdir(BAK_DIR):
        part = MIMEBase('application', "octet-stream")
        part.set_payload(open(os.path.join(BAK_DIR, filename),"rb").read() )
        Encoders.encode_base64(part)
        part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(filename))
        msg.attach(part)

    try:
        smtp = ExtendedSMTP()
        smtp.callback = callback
        smtp.connect('smtp.qq.com', 25)
        smtp.login('mymail', 'mypwd')
        smtp.sendmail(MAIL_FROM, MAIL_TO, msg.as_string())
        smtp.close()
        os.system('rm -f %s/*' % BAK_DIR)
    except Exception, e:
        print e

if __name__ == '__main__':
    if len(sys.argv) == 1:
        print 'Please specific a subject'
        print 'Usage: send_files <MAIL_SUBJECT>'
    else:
        sendmail(sys.argv[1])

 安装:

 

配置好收件人,发件人,smtp地址,用户名,密码及要发送文件所在的路径。

将文件保存为 send_files,保存到 /usr/bin 下面。

然后设置文件权限为可执行:

 

$ chmod +x send_files

 

 用法:

 

$ send_files '邮件标题'

 

还带有进度条哦~~

 

via: http://www.g2w.me/2011/12/send_files_in_dir_with_python/

 

分享到:
评论

相关推荐

    python实现定时压缩指定文件夹发送邮件

    ### Python 实现定时压缩指定文件夹并发送邮件 在日常工作中,经常会有重复性的任务,例如需要定期收集部门内部的数据文件然后发送给其他部门进行处理。这类任务虽然看似简单,但如果能够通过编程的方式自动化处理...

    Python发送以整个文件夹的内容为附件的邮件的教程

    ### Python发送以整个文件夹的内容为附件的邮件的教程 #### 概述 在日常工作中,我们经常会遇到需要通过电子邮件发送文件的需求。然而,大多数情况下,我们只能将单个文件作为附件发送,而无法直接将整个文件夹...

    Ranorex通过Python将报告发送到邮箱的方法

    Ranorex测试报告如何发送到邮箱在网上看了下,其实...然后新建一个文件夹用来放Python发送邮件的CODE。 '''发送给********@163.com''' from email.mime.application import MIMEApplication import smtplib import o

    基于Pyqt5实现的邮件发送器(Python).zip

    Python的`smtplib`库被用来连接到SMTP服务器并发送邮件。 4. **IMAP/POP3协议**:虽然标题没有明确提到,但可能还涉及到了Internet消息访问协议(IMAP)或邮局协议(POP3),用于接收邮件。如果邮件发送器有读取或...

    自启动发送指定信息到邮箱示例

    在IT领域,自启动发送指定信息到邮箱的功能通常用于自动化监控、日志报告或系统报警。这个示例涉及几个关键知识点,包括自启动程序、网络连接检测、IP地址获取以及邮件发送。以下是对这些知识点的详细说明: 1. **...

    一些邮箱 关于邮箱的邮箱

    - **验证信息**:注册新邮箱时,服务商通常会发送一个验证代码到用户的另一个联系渠道,如手机,以确认用户身份。 - **邮箱设置**:如SMTP、POP3或IMAP服务器地址、端口号、安全连接类型(SSL/TLS)等。 - **联系人...

    python+selenium+unittest自动化测试demo

    7. **自动发送邮件**: 测试完成后,自动发送邮件功能可以将测试报告直接发送到指定的收件人邮箱。这可能通过Python的smtplib和email库实现,结合SMTP服务器进行邮件发送。邮件内容可能包含测试总结、失败详情等关键...

    bi站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发) 后端

    bi站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发) 后端 - python1.定时任务采用win自带或者time.sleep() 2....5.按日期将文件夹压缩zip 将压缩后的zip发送给指定的 邮箱或者邮箱群组.zip

    Python-KnockKnock只要两行代码在模型训练结束时得到及时通知

    以上代码会向指定邮箱发送一条邮件。对于其他通知方式,如短信或Slack,只需替换合适的函数即可。 4. **高级功能** - **自定义消息**:你可以自定义通知中的文本内容,以便提供更多的训练细节。 - **条件通知**...

    python给指定csv表格中的联系人群发邮件(带附件的邮件)

    循环结构用于遍历reader对象,逐行读取数据,将联系人邮箱添加到列表中,最后将列表转换为字符串形式,用于邮件发送。 总结来说,该文件涉及了Python编程语言在邮件发送和CSV数据处理方面的应用。通过具体的操作...

    帮助红队收集目标企业员工的邮箱信息,借助必应搜索引擎爬取邮箱

    在Python中,可以使用像`requests`库来发送HTTP请求,`BeautifulSoup`库来解析HTML内容,以及`re`库来进行正则表达式匹配,从而实现对邮箱地址的搜索和提取。必应虽然有自己的API,但通常对于大规模爬取限制较多,...

    python3使用SMTP发送HTML格式邮件

    在完成SMTP服务的设置并获取到必要信息后,可以使用Python3的smtplib库和email库中的相关模块来编写代码实现邮件发送。这包括使用MIMEText来创建邮件内容,将HTML文件读入内存作为邮件正文。在邮件头部信息中指定发...

    母亲节祝福python

    这个程序可能涉及到文本处理、日期操作、用户交互,甚至网络通信(如果涉及到发送电子邮件或短信)。 首先,我们可以使用Python的内置模块`datetime`来获取当前日期,并判断是否为母亲节。母亲节通常在每年五月的第...

    本项目有使用Python开发框架Flask实现问答平台基本功能用户邮箱注册与登录、问题发布与评论。.zip

    在本项目中,我们主要探讨的是使用Python的Flask框架构建一个基础的问答平台。Flask是一个轻量级的Web应用框架,它以其简洁、灵活的特性深受开发者喜爱。在这个项目中,我们将学习如何利用Flask实现用户注册、登录、...

    华为rpa实现批量发送学生证书机器人

    适用于学校、企业、组织等的批量发送工作,比如通过邮件批量发送证书、奖状、资料等等需要批量发送的资料,更改发送内容需要一定的python基础 场景描述:某老师收到了一批学生的成绩证书,需要逐一发送邮件给对应的...

    Python实现邮件服务功能.zip

    除了发送和接收,还可以使用Python进行邮件管理,比如移动邮件到不同的文件夹,标记为已读/未读,甚至删除邮件。 在“email-server-master”这个项目中,可能包含了实现这些功能的代码示例,你可以通过学习和实践...

    基于python flask web框架的全栈项目.zip

    如果在服务器运行,要保留数据,则可以复制数据库 migrations 文件夹以及数据库 data-dev.sqlite 到服务器,之后请参考这篇文章进行配置,Flask + Gunicorn + Nginx 部署 ,最后输入命令 ./venv/bin/gunicorn -w 4 -...

Global site tag (gtag.js) - Google Analytics