E5Network/E5GoogleMail.py

Wed, 27 Feb 2019 19:48:11 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 27 Feb 2019 19:48:11 +0100
changeset 6823
55bda7c2404d
parent 6817
8fb29a716d1a
child 6825
e659bb96cdfa
permissions
-rw-r--r--

EmailPage: refined the email configuration page with respect to the Gmail messages.

5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
6645
ad476851d7e0 Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6559
diff changeset
3 # Copyright (c) 2017 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to send bug reports.
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from __future__ import unicode_literals
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 try:
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 str = unicode # __IGNORE_EXCEPTION__
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 except NameError:
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 pass
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 import os
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 import sys
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 import base64
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
19 import pickle
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 from googleapiclient import discovery
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
22 from google_auth_oauthlib.flow import InstalledAppFlow
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
23 from google.auth.transport.requests import Request
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
6559
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
25 from PyQt5.QtCore import QCoreApplication
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
26
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 import Globals
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 SCOPES = 'https://www.googleapis.com/auth/gmail.send'
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 CLIENT_SECRET_FILE = 'eric_client_secret.json'
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
32 CREDENTIALS_FILE = 'eric-python-email-send.pickle'
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 APPLICATION_NAME = 'Eric Python Send Email'
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
6823
55bda7c2404d EmailPage: refined the email configuration page with respect to the Gmail messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6817
diff changeset
36 # TODO: rework this to use "requests-outhlib" and a minimalistic web browser
55bda7c2404d EmailPage: refined the email configuration page with respect to the Gmail messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6817
diff changeset
37 # window for authorization
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
38 def isClientSecretFileAvailable():
6559
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
39 """
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
40 Module function to check, if the client secret file has been installed.
6559
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
41
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
42 @return flag indicating, that the credentials file is there
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
43 @rtype bool
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
44 """
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
45 return os.path.exists(
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
46 os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE))
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
47
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
48
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 def getCredentials():
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 Module function to get the Google credentials.
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 @return Google Mail credentials
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 homeDir = os.path.expanduser('~')
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
56 credentialsDir = os.path.join(homeDir, '.credentials')
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
57 if not os.path.exists(credentialsDir):
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
58 os.makedirs(credentialsDir)
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
59 credentialsPath = os.path.join(credentialsDir, CREDENTIALS_FILE)
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
60
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
61 credentials = None
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
62 # The file eric-python-email-send.pickle stores the user's access and
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
63 # refresh tokens, and is created automatically when the authorization
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
64 # flow completes for the first time.
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
65 if os.path.exists(credentialsPath):
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
66 with open(credentialsPath, 'rb') as token:
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
67 credentials = pickle.load(token)
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
68 # If there are no (valid) credentials available, let the user log in.
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
69 if not credentials or not credentials.valid:
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
70 if credentials and credentials.expired and credentials.refresh_token:
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
71 credentials.refresh(Request())
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
72 else:
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
73 flow = InstalledAppFlow.from_client_secrets_file(
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
74 os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE),
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
75 SCOPES)
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
76 credentials = flow.run_local_server()
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
77 # Save the credentials for the next run
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
78 with open(credentialsPath, 'wb') as credentialsFile:
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
79 pickle.dump(credentials, credentialsFile)
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 return credentials
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 def GoogleMailSendMessage(message):
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 Module function to send an email message via Google Mail.
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 @param message email message to be sent
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @type email.mime.text.MIMEBase
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @return tuple containing a success flag and a result or error message
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @rtype tuple of (bool, str)
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
6559
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
92 # check for secrets file first
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
93 if not os.path.exists(os.path.join(Globals.getConfigDir(),
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
94 CLIENT_SECRET_FILE)):
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
95 return False, QCoreApplication.translate(
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
96 "GoogleMailSendMessage",
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
97 "The credentials file is not present. Has the Gmail API"
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
98 " been enabled?")
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
99
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 try:
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 credentials = getCredentials()
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
102 service = discovery.build('gmail', 'v1', credentials=credentials)
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 if sys.version_info[0] == 2:
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 message1 = _prepareMessage_v2(message)
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 else:
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 message1 = _prepareMessage_v3(message)
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 result = service.users().messages()\
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 .send(userId="me", body=message1).execute()
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 return True, result
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 except Exception as error:
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 return False, str(error)
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 def _prepareMessage_v2(message):
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 Module function to prepare the message for sending (Python2 Variant).
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @param message message to be prepared
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 @type email.mime.text.MIMEBase
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 @return prepared message dictionary
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @rtype dict
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 raw = base64.urlsafe_b64encode(message.as_string())
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 return {'raw': raw}
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 def _prepareMessage_v3(message):
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 Module function to prepare the message for sending (Python2 Variant).
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @param message message to be prepared
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 @type email.mime.text.MIMEBase
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 @return prepared message dictionary
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 @rtype dict
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 messageAsBase64 = base64.urlsafe_b64encode(message.as_bytes())
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 raw = messageAsBase64.decode()
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 return {'raw': raw}
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 def GoogleMailHelp():
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 Module function to get some help about how to enable the Google Mail
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 OAuth2 service.
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 @return help text
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 @rtype str
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 return (
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 "<h2>Steps to turn on the Gmail API</h2>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 "<ol>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 "<li>Use <a href='{0}'>this wizard</a> to create or select a project"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 " in the Google Developers Console and automatically turn on the API."
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 " Click <b>Continue</b>, then <b>Go to credentials</b>.</li>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 "<li>At the top of the page, select the <b>OAuth consent screen</b>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 " tab. Select an <b>Email address</b>, enter a <b>Product name</b> if"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 " not already set, and click the <b>Save</b> button.</li>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 "<li>Select the <b>Credentials</b> tab, click the <b>Add credentials"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 "</b> button and select <b>OAuth 2.0 client ID</b>.</li>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 "<li>Select the application type <b>Other</b>, enter the name &quot;"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 "{1}&quot;, and click the <b>Create</b>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 " button.</li>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 "<li>Click <b>OK</b> to dismiss the resulting dialog.</li>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 "<li>Click the (Download JSON) button to the right of the client ID."
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 "</li>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 "<li>Move this file to the eric configuration directory"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 " <code>{2}</code> and rename it <code>{3}</code>.</li>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 "</ol>".format(
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 "https://console.developers.google.com/start/api?id=gmail",
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 APPLICATION_NAME,
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 Globals.getConfigDir(),
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 CLIENT_SECRET_FILE
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 )
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 )

eric ide

mercurial