Initial commit
bn8 authored 11 years ago
|
9) #
10) # This file is part of MailT.
11) #
12) # MailT is free software; you can redistribute it and/or modify
13) # it under the terms of the GNU General Public License as published
14) # by the Free Software Foundation, either version 3 of the License,
15) # or (at your option) any later version.
16) #
17) # MailT is distributed in the hope that it will be useful,
18) # but WITHOUT ANY WARRANTY; without even the implied warranty of
19) # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20) # GNU Affero General Public License for more details.
21) #
22) # You should have received a copy of the GNU General Public License
23) # along with this program. If not, see <http://www.gnu.org/licenses/>.
24)
25) from optparse import OptionParser
26)
27) import os
28) import imaplib
29)
30) import logging
31) import sys
32)
33) parser = OptionParser()
34)
35)
36) parser.add_option('-H',
37) '--host',
38) action="store",
39) type="string",
40) dest="host",
41) help="The IMAP host",
42) default="127.0.0.1")
43)
44) parser.add_option('-p',
45) '--port',
46) action="store",
47) type="string",
48) dest="port",
49) help="The IMAP port",
50) default=None)
51)
52) parser.add_option('-S',
53) '--ssl',
54) action="store_true",
55) dest="ssl",
56) help="IMAP Over SSL (IMAPS)",
57) default=False)
58)
59) parser.add_option('-U',
60) '--user',
61) action="store",
62) type="string",
63) dest="user",
64) help="User login",
65) default=None)
66)
67) parser.add_option('-P',
68) '--password',
69) action="store",
70) type="string",
71) dest="password",
72) help="User password",
73) default=None)
74)
75) parser.add_option('--md5',
76) action="store_true",
77) dest="md5",
78) help="Use CRAM-MD5 password for authentication",
79) default=False)
80)
81) parser.add_option('-m',
82) '--mailbox',
83) action="store",
84) type="string",
85) dest="mailbox",
86) help="The mailbox directory to select",
87) default='INBOX')
88)
89) parser.add_option('-v',
90) '--verbose',
91) action="store_true",
92) dest="verbose")
93)
|
Initial commit
bn8 authored 11 years ago
|
101) (options, args) = parser.parse_args()
102)
103) if options.verbose:
104) loglevel=logging.DEBUG
105) else:
106) loglevel=logging.INFO
107)
108) logging.basicConfig(level=loglevel,format='%(asctime)s - %(levelname)s - %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
109)
110) if not options.user or not options.password:
111) logging.fatal('You must provide the user login and password')
112) sys.exit(1)
113)
114) if options.port is None:
115) if options.ssl:
116) options.port=993
117) else:
118) options.port=143
119)
120) if options.ssl:
121) logging.debug('Establish SSL connexion to server')
122) try:
123) server = imaplib.IMAP4_SSL(options.host,options.port)
124) logging.debug('Connected')
125) except Exception, e:
126) logging.critical("IMAP connection error : %s" % e)
127) sys.exit(2)
128) else:
129) logging.debug("Establish connexion to server")
130) try:
131) server = imaplib.IMAP4(options.host,options.port)
132) logging.debug('Connected')
133) except Exception, e:
134) logging.critical("IMAP connection error : %s" % e)
135) sys.exit(2)
136)
137) if options.user:
138) try:
139) if options.md5:
140) logging.debug('Login into server as %s (with CRAM-MD5 password)' % options.user)
141) server.login_cram_md5(options.user,options.password)
142) else:
143) logging.debug('Login into server as %s' % options.user)
144) server.login(options.user,options.password)
145) logging.debug('Logged')
146) except Exception as e:
147) logging.critical("IMAP Auth error : %s" % e)
148) sys.exit(3)
149)
150) try:
|