Skip to content

Commit 1a099f3

Browse files
authored
Merge pull request mjs#281 from growbots/update-examples
Update examples to reflect recent changes
2 parents 6330970 + 826ab8e commit 1a099f3

File tree

5 files changed

+58
-61
lines changed

5 files changed

+58
-61
lines changed

examples/example.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,26 @@
22
# Released subject to the New BSD License
33
# Please see http://en.wikipedia.org/wiki/BSD_licenses
44

5-
from __future__ import unicode_literals
6-
75
from imapclient import IMAPClient
86

97
HOST = 'imap.host.com'
108
USERNAME = 'someuser'
119
PASSWORD = 'secret'
12-
ssl = False
1310

14-
server = IMAPClient(HOST, use_uid=True, ssl=ssl)
11+
server = IMAPClient(HOST)
1512
server.login(USERNAME, PASSWORD)
1613

1714
select_info = server.select_folder('INBOX')
1815
print('%d messages in INBOX' % select_info[b'EXISTS'])
1916

2017
messages = server.search(['NOT', 'DELETED'])
21-
print("%d messages that aren't deleted" % len(messages))
18+
print("%d messages that aren't deleted\n" % len(messages))
2219

23-
print()
2420
print("Messages:")
2521
response = server.fetch(messages, ['FLAGS', 'RFC822.SIZE'])
2622
for msgid, data in response.items():
2723
print(' ID %d: %d bytes, flags=%s' % (msgid,
2824
data[b'RFC822.SIZE'],
2925
data[b'FLAGS']))
26+
27+
server.logout()

examples/idle_example.py

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
1-
# This example is a lot more interesting if you have an active client
2-
# connected to the same IMAP account!
3-
4-
from __future__ import unicode_literals
5-
6-
from imapclient import IMAPClient
7-
8-
HOST = 'imap.host.com'
9-
USERNAME = 'someuser'
10-
PASSWORD = 'password'
11-
ssl = True
12-
13-
server = IMAPClient(HOST, use_uid=True, ssl=ssl)
14-
server.login(USERNAME, PASSWORD)
15-
server.select_folder('INBOX')
16-
17-
# Start IDLE mode
18-
server.idle()
19-
20-
# Wait for up to 30 seconds for an IDLE response
21-
responses = server.idle_check(timeout=30)
22-
print(responses)
23-
24-
# Come out of IDLE mode
25-
text, responses = server.idle_done()
26-
print('IDLE done. Server said %r' % text)
27-
print('Final responses: ', responses)
28-
29-
print(server.logout())
1+
# Open a connection in IDLE mode and wait for notifications from the server
2+
3+
from imapclient import IMAPClient
4+
5+
HOST = 'imap.host.com'
6+
USERNAME = 'someuser'
7+
PASSWORD = 'password'
8+
9+
server = IMAPClient(HOST)
10+
server.login(USERNAME, PASSWORD)
11+
server.select_folder('INBOX')
12+
13+
# Start IDLE mode
14+
server.idle()
15+
print("Connection is now in IDLE mode, send yourself an email or quit with ^c")
16+
17+
while True:
18+
try:
19+
# Wait for up to 30 seconds for an IDLE response
20+
responses = server.idle_check(timeout=30)
21+
print("Server sent:", responses if responses else "nothing")
22+
except KeyboardInterrupt:
23+
break
24+
25+
server.idle_done()
26+
print("\nIDLE mode done")
27+
server.logout()

examples/oauth2_example.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from __future__ import unicode_literals
1+
# Login using OAUTH2
22

33
from imapclient import IMAPClient
44

@@ -8,14 +8,7 @@
88

99
HOST = 'imap.host.com'
1010
URL = "https://somedomain.com/someuser/imap/"
11-
ssl = True
1211

13-
server = IMAPClient(HOST, use_uid=True, ssl=ssl)
14-
15-
resp = server.oauth2_login(URL, OAUTH2_USER, OAUTH2_ACCESS_TOKEN)
16-
print(resp)
17-
18-
select_info = server.select_folder('INBOX')
19-
print(select_info)
20-
21-
server.logout()
12+
with IMAPClient(HOST) as server:
13+
server.oauth2_login(URL, OAUTH2_USER, OAUTH2_ACCESS_TOKEN)
14+
# ...do something...

examples/tls_cacert.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
# Copyright (c) 2015, Menno Smits
22
# Released subject to the New BSD License
33
# Please see http://en.wikipedia.org/wiki/BSD_licenses
4+
#
5+
# Establish a secure connection to a server that does not have a certificate
6+
# signed by a trusted authority.
47

5-
from __future__ import unicode_literals
6-
import imapclient
8+
import ssl
9+
10+
from imapclient import IMAPClient
711

812
HOST = 'imap.host.com'
913
USERNAME = 'someuser'
1014
PASSWORD = 'secret'
1115

12-
context = imapclient.create_default_context(cafile="/path/to/cacert.pem")
16+
ssl_context = ssl.create_default_context(cafile="/path/to/cacert.pem")
1317

14-
server = imapclient.IMAPClient(HOST, use_uid=True, ssl=True, ssl_context=context)
15-
server.login(USERNAME, PASSWORD)
16-
# ...
18+
with IMAPClient(HOST, ssl_context=ssl_context) as server:
19+
server.login(USERNAME, PASSWORD)
20+
# ...do something...

examples/tls_no_checks.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
# Copyright (c) 2015, Menno Smits
22
# Released subject to the New BSD License
33
# Please see http://en.wikipedia.org/wiki/BSD_licenses
4+
#
5+
# Establish an encrypted connection to a server without checking its
6+
# certificate. This setup is insecure, DO NOT USE to connect to servers
7+
# over the Internet.
48

5-
from __future__ import unicode_literals
6-
import imapclient
7-
from backports import ssl
9+
import ssl
10+
11+
from imapclient import IMAPClient
812

913
HOST = 'imap.host.com'
1014
USERNAME = 'someuser'
1115
PASSWORD = 'secret'
1216

13-
context = imapclient.create_default_context()
17+
ssl_context = ssl.create_default_context()
1418

1519
# don't check if certificate hostname doesn't match target hostname
16-
context.check_hostname = False
20+
ssl_context.check_hostname = False
1721

1822
# don't check if the certificate is trusted by a certificate authority
19-
context.verify_mode = ssl.CERT_NONE
23+
ssl_context.verify_mode = ssl.CERT_NONE
2024

21-
server = imapclient.IMAPClient(HOST, use_uid=True, ssl=True, ssl_context=context)
22-
server.login(USERNAME, PASSWORD)
23-
# ...
25+
with IMAPClient(HOST, ssl_context=ssl_context) as server:
26+
server.login(USERNAME, PASSWORD)
27+
# ...do something...

0 commit comments

Comments
 (0)