E5Network/E5GoogleMail.py

Sat, 02 Mar 2019 11:15:24 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 02 Mar 2019 11:15:24 +0100
branch
maintenance
changeset 6826
c6dda2cbe081
parent 6825
e659bb96cdfa
child 6828
bb6667ea9ae7
permissions
-rw-r--r--

Merged with default branch to prepare a new release.

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
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
36 def isClientSecretFileAvailable():
6559
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
37 """
6817
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
38 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
39
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
40 @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
41 @rtype bool
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
42 """
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
43 return os.path.exists(
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
44 os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE))
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
45
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
46
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 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
48 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 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
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 @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
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 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
54 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
55 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
56 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
57 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
58
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
59 credentials = None
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
60 # 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
61 # 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
62 # 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
63 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
64 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
65 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
66 # 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
67 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
68 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
69 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
70 else:
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
71 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
72 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
73 SCOPES)
8fb29a716d1a E5GoogleMail: changed code to no longer use the deprecated oauth2client library.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
74 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
75 # 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
76 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
77 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
78 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
79
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 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
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 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
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 @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
86 @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
87 @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
88 @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
89 """
6559
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
90 # check for secrets file first
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
91 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
92 CLIENT_SECRET_FILE)):
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
93 return False, QCoreApplication.translate(
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
94 "GoogleMailSendMessage",
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
95 "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
96 " been enabled?")
1265efa7364f Some fixes for configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
97
5769
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 try:
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 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
100 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
101 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
102 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
103 else:
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_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
105 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
106 .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
107
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 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
109 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
110 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
111
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 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
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 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
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 @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
118 @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
119 @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
120 @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
121 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 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
123 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
124
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 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
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 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
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 @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
131 @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
132 @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
133 @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
134 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 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
136 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
137 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
138
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 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
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 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
143 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
144
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 @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
146 @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
147 """
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 return (
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 "<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
150 "<ol>"
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 "<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
152 " 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
153 " 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
154 "<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
155 " 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
156 " 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
157 "<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
158 "</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
159 "<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
160 "{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
161 " 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
162 "<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
163 "<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
164 "</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>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
166 " <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
167 "</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
168 "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
169 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
170 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
171 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
172 )
944c04cec861 Added the capability to send these emails via Google Mail using OAuth2 authentication.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 )

eric ide

mercurial