Python發(fā)送以整個文件夾的內(nèi)容為附件的郵件的教程
更新時間:2015年05月06日 11:25:47 投稿:goldensun
這篇文章主要介紹了Python發(fā)送以整個文件夾的內(nèi)容為附件的郵件的教程,普通我們在運營商免費郵箱中發(fā)附件通常只能發(fā)文件而不能發(fā)文件夾,而該腳本則可以實現(xiàn)文件夾的發(fā)送(自己動手編程的強大之處:D),需要的朋友可以參考下
由于我經(jīng)常需要備份文件夾下的內(nèi)容到郵件里面,每個打開郵件,上傳文件,發(fā)送,太過麻煩,其實每次發(fā)送的文件都是放在固定 置的,只是郵件標題不同而已,于是用 python 為自己寫了個發(fā)送文件到郵箱的小工具,在任意目錄下執(zhí)行該腳本,并指定郵件標 ,就將指定文件夾下的文件發(fā)送到郵箱中備份起來 。
#!/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])
安裝:
配置好收件人,發(fā)件人,smtp地址,用戶名,密碼及要發(fā)送文件所在的路徑。
將文件保存為 send_files,保存到 /usr/bin 下面。
然后設置文件權限為可執(zhí)行:
$ chmod +x send_files
用法:
$ send_files '郵件標題'
還帶有進度條哦~~
您可能感興趣的文章:
- python登錄pop3郵件服務器接收郵件的方法
- python實現(xiàn)批量解析郵件并下載附件
- Python3使用SMTP發(fā)送帶附件郵件
- python發(fā)送郵件的實例代碼(支持html、圖片、附件)
- 用Python實現(xiàn)一個簡單的能夠發(fā)送帶附件的郵件程序的教程
- python實現(xiàn)發(fā)送郵件及附件功能
- 二種python發(fā)送郵件實例講解(python發(fā)郵件附件可以使用email模塊實現(xiàn))
- 詳解python實現(xiàn)讀取郵件數(shù)據(jù)并下載附件的實例
- Python實現(xiàn)讀取郵箱中的郵件功能示例【含文本及附件】
- python+POP3實現(xiàn)批量下載郵件附件
相關文章
Win10下用Anaconda安裝TensorFlow(圖文教程)
這篇文章主要介紹了Win10下用Anaconda安裝TensorFlow(圖文教程),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
python實現(xiàn)植物大戰(zhàn)僵尸游戲?qū)嵗a
這篇文章主要給大家介紹了關于python實現(xiàn)植物大戰(zhàn)僵尸游戲的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-06-06

