[파이썬] Gmail 정리하기
페이지 정보
작성자 서방님 댓글 0건 조회 242회 작성일 15-02-12 16:43본문
출처 : http://jmjeong.com/purge-old-gmail/
회사 메일을 forward해서 사용하고 있는 gmail을 7571MB중에서 7449MB를 썼다. Gmail에 특정 날짜 이전의 메일을 정리하는 기능이 없어서 만든 script이다. 프로그램을 수행하면, 2010년 1월 1일 이전의 메일을 전부 휴지통으로 이동한다.
Gmail은 imap.store('+FLAGS', 'Deleted')
후에 imap.expunge()
를 하더라도 실제 메일을 삭제하는 것이 아니라, 해당 메일에서 라벨만 제거하는 식으로 동작을 한다. 지우기 위해서는 메시지를 ‘[Gmail]/Trash’로 이동한 후, 휴지통에서 삭제하는 방식을 사용해야 한다.
휴지통 이름은 ‘언어설정’에 따라 달라지는 것 같다. 한국어로 설정했을 때는 결과값이 실패로 넘어오는데, 영문으로 바꾼 후에는 정상 동작한다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2011 Jaemok Jeong(jmjeong@gmail.com)
#
# purgegmail.py
#
# Google mail purge utility
#
# [2011/04/19]
import imaplib
import datetime
import getpass
import sys
# add user information
gmail_user = '' # gmail account
gmail_pass = '' # gmail passwd
purgeDate = datetime.date(2010,01,1) # 이 날짜 앞의 메일들은 전부 삭제
# constant
gmail_host = 'imap.gmail.com'
def process():
imap = imaplib.IMAP4_SSL(gmail_host)
try:
imap.login(gmail_user, gmail_pass)
except:
print "Login failed"
sys.exit(-1)
num = imap.select()
searchString = ('(before "%s")' % purgeDate.strftime("%d-%b-%Y"))
typ, data = imap.search (None, searchString)
y_or_n = raw_input("Delete %d messages? " % len(data[0].split(' ')))
if (not (y_or_n == 'y' or y_or_n == 'Y')): return
data = ','.join(data[0].split(' '))
typ, data = imap.copy(data, '[Gmail]/Trash')
if typ == "OK":
print "Delete sucessful!"
else:
print "Delete failed!"
imap.close()
imap.logout()
if __name__ == '__main__':
if gmail_user == '':
gmail_user = raw_input('gmail id: ')
if gmail_pass == '':
gmail_pass = getpass.getpass()
process()
print "Finished..."
댓글목록
등록된 댓글이 없습니다.