From 683125d2defb642b4fd468c51fe0ba684091380d Mon Sep 17 00:00:00 2001 From: lecovi Date: Sat, 4 Jun 2022 16:49:40 -0300 Subject: [PATCH 1/8] fix: issue #317 --- gmail/snippet/send mail/send_message.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/gmail/snippet/send mail/send_message.py b/gmail/snippet/send mail/send_message.py index 995d1cde..edcd2e9e 100644 --- a/gmail/snippet/send mail/send_message.py +++ b/gmail/snippet/send mail/send_message.py @@ -44,10 +44,7 @@ def gmail_send_message(): .decode() create_message = { - 'message': { - - 'raw': encoded_message - } + 'raw': encoded_message } # pylint: disable=E1101 send_message = (service.users().messages().send From ac8136cb7f2e510d75fb1f4d4e6d78b167e4a082 Mon Sep 17 00:00:00 2001 From: lecovi Date: Sat, 4 Jun 2022 16:50:27 -0300 Subject: [PATCH 2/8] fix: issue #318 --- gmail/snippet/send mail/create_draft.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/gmail/snippet/send mail/create_draft.py b/gmail/snippet/send mail/create_draft.py index cb4a4220..e0712abb 100644 --- a/gmail/snippet/send mail/create_draft.py +++ b/gmail/snippet/send mail/create_draft.py @@ -48,9 +48,7 @@ def gmail_create_draft(): encoded_message = base64.urlsafe_b64encode(message.as_bytes()).decode() create_message = { - 'message': { 'raw': encoded_message - } } # pylint: disable=E1101 draft = service.users().drafts().create(userId="me", From 1f0833c236cf3a4d76c4e8b42fe7d6f8c22f8bef Mon Sep 17 00:00:00 2001 From: lecovi Date: Sat, 4 Jun 2022 16:50:39 -0300 Subject: [PATCH 3/8] fix: issue #319 --- gmail/snippet/send mail/create_draft_with_attachment.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/gmail/snippet/send mail/create_draft_with_attachment.py b/gmail/snippet/send mail/create_draft_with_attachment.py index d3735215..e9281635 100644 --- a/gmail/snippet/send mail/create_draft_with_attachment.py +++ b/gmail/snippet/send mail/create_draft_with_attachment.py @@ -56,9 +56,7 @@ def gmail_create_draft_with_attachment(): encoded_message = base64.urlsafe_b64encode(mime_message.as_bytes()).decode() create_draft_request_body = { - 'message': { - 'raw': encoded_message - } + 'raw': encoded_message } # pylint: disable=E1101 draft = service.users().drafts().create(userId="me", From ba832552b4bb2e893aa57825b025e3b124215a05 Mon Sep 17 00:00:00 2001 From: lecovi Date: Sat, 4 Jun 2022 16:50:54 -0300 Subject: [PATCH 4/8] fix: issue #320 --- gmail/snippet/send mail/send_message_with_attachment.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/gmail/snippet/send mail/send_message_with_attachment.py b/gmail/snippet/send mail/send_message_with_attachment.py index a8832250..2bc39d49 100644 --- a/gmail/snippet/send mail/send_message_with_attachment.py +++ b/gmail/snippet/send mail/send_message_with_attachment.py @@ -54,10 +54,7 @@ def gmail_send_message_with_attachment(): .decode() send_message_request_body = { - 'message': { - - 'raw': encoded_message - } + 'raw': encoded_message } # pylint: disable=E1101 send_message = (service.users().messages().send From f68daebe349d97309af34bfaad5531aab986a1c3 Mon Sep 17 00:00:00 2001 From: lecovi Date: Sat, 4 Jun 2022 16:56:08 -0300 Subject: [PATCH 5/8] fix: updates Python email API at send_mail.py example --- gmail/snippet/send mail/send_message.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gmail/snippet/send mail/send_message.py b/gmail/snippet/send mail/send_message.py index edcd2e9e..55f587ef 100644 --- a/gmail/snippet/send mail/send_message.py +++ b/gmail/snippet/send mail/send_message.py @@ -15,7 +15,7 @@ from __future__ import print_function import base64 -from email.mime.text import MIMEText +from email.message import EmailMessage import google.auth from googleapiclient.discovery import build @@ -35,7 +35,8 @@ def gmail_send_message(): try: service = build('gmail', 'v1', credentials=creds) - message = MIMEText('This is automated draft mail') + message = EmailMessage() + message.set_content('This is automated draft mail') message['To'] = 'gduser1@workspacesamples.dev' message['From'] = 'gduser2@workspacesamples.dev' message['Subject'] = 'Automated draft' From 52cad822d248b08a65f7e16b4e25fac6ff53ed46 Mon Sep 17 00:00:00 2001 From: lecovi Date: Sat, 4 Jun 2022 16:58:48 -0300 Subject: [PATCH 6/8] fix: updates Python email API at create_draft.py example --- gmail/snippet/send mail/create_draft.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gmail/snippet/send mail/create_draft.py b/gmail/snippet/send mail/create_draft.py index e0712abb..000173f4 100644 --- a/gmail/snippet/send mail/create_draft.py +++ b/gmail/snippet/send mail/create_draft.py @@ -19,7 +19,7 @@ from __future__ import print_function import base64 -from email.mime.text import MIMEText +from email.message import EmailMessage import google.auth from googleapiclient.discovery import build @@ -41,7 +41,8 @@ def gmail_create_draft(): # create gmail api client service = build('gmail', 'v1', credentials=creds) - message = MIMEText('This is automated draft mail') + message = EmailMessage() + message.set_content('This is automated draft mail') message['To'] = 'gduser1@workspacesamples.dev' message['From'] = 'gduser2@workspacesamples.dev' message['Subject'] = 'Automated draft' From 6515c10d6a81c6b90c20ba9f3001fa6a6e4ca462 Mon Sep 17 00:00:00 2001 From: lecovi Date: Sat, 4 Jun 2022 17:53:09 -0300 Subject: [PATCH 7/8] fix: updates Python email API at send_message_with_attachment.py example --- gmail/snippet/send mail/create_draft.py | 4 ++ gmail/snippet/send mail/send_message.py | 3 + .../send mail/send_message_with_attachment.py | 63 +++++++------------ 3 files changed, 29 insertions(+), 41 deletions(-) diff --git a/gmail/snippet/send mail/create_draft.py b/gmail/snippet/send mail/create_draft.py index 000173f4..8ee16a6c 100644 --- a/gmail/snippet/send mail/create_draft.py +++ b/gmail/snippet/send mail/create_draft.py @@ -42,10 +42,14 @@ def gmail_create_draft(): service = build('gmail', 'v1', credentials=creds) message = EmailMessage() + message.set_content('This is automated draft mail') + message['To'] = 'gduser1@workspacesamples.dev' message['From'] = 'gduser2@workspacesamples.dev' message['Subject'] = 'Automated draft' + + # encoded message encoded_message = base64.urlsafe_b64encode(message.as_bytes()).decode() create_message = { diff --git a/gmail/snippet/send mail/send_message.py b/gmail/snippet/send mail/send_message.py index 55f587ef..432d2cdb 100644 --- a/gmail/snippet/send mail/send_message.py +++ b/gmail/snippet/send mail/send_message.py @@ -36,10 +36,13 @@ def gmail_send_message(): try: service = build('gmail', 'v1', credentials=creds) message = EmailMessage() + message.set_content('This is automated draft mail') + message['To'] = 'gduser1@workspacesamples.dev' message['From'] = 'gduser2@workspacesamples.dev' message['Subject'] = 'Automated draft' + # encoded message encoded_message = base64.urlsafe_b64encode(message.as_bytes()) \ .decode() diff --git a/gmail/snippet/send mail/send_message_with_attachment.py b/gmail/snippet/send mail/send_message_with_attachment.py index 2bc39d49..f375af8a 100644 --- a/gmail/snippet/send mail/send_message_with_attachment.py +++ b/gmail/snippet/send mail/send_message_with_attachment.py @@ -15,12 +15,7 @@ import base64 import mimetypes -import os -from email.mime.audio import MIMEAudio -from email.mime.base import MIMEBase -from email.mime.image import MIMEImage -from email.mime.multipart import MIMEMultipart -from email.mime.text import MIMEText +from email.message import EmailMessage import google.auth from googleapiclient.discovery import build @@ -39,16 +34,31 @@ def gmail_send_message_with_attachment(): creds, _ = google.auth.default() try: + # create gmail api client service = build('gmail', 'v1', credentials=creds) - mime_message = MIMEMultipart() + mime_message = EmailMessage() + + # headers mime_message['to'] = 'gduser1@workspacesamples.dev' mime_message['from'] = 'gduser2@workspacesamples.dev' mime_message['subject'] = 'sample with attachment' - text_part = MIMEText('Hi, this is automated mail with attachment.' - 'Please do not reply.') - mime_message.attach(text_part) - image_attachment = build_file_part(file='photo.jpg') - mime_message.attach(image_attachment) + + # text + mime_message.set_content( + 'Hi, this is automated mail with attachment.' + 'Please do not reply.' + ) + + # attachment + attachment_filename = 'photo.jpg' + # guessing the MIME type + type_subtype, _ = mimetypes.guess_type(attachment_filename) + maintype, subtype = type_subtype.split('/') + + with open(attachment_filename, 'rb') as fp: + attachment_data = fp.read() + mime_message.add_attachment(attachment_data, maintype, subtype) + # encoded message encoded_message = base64.urlsafe_b64encode(mime_message.as_bytes()) \ .decode() @@ -66,35 +76,6 @@ def gmail_send_message_with_attachment(): return send_message -def build_file_part(file): - """Creates a MIME part for a file. - Args: - file: The path to the file to be attached. - Returns: - A MIME part that can be attached to a message. - """ - content_type, encoding = mimetypes.guess_type(file) - if content_type is None or encoding is not None: - content_type = 'application/octet-stream' - main_type, sub_type = content_type.split('/', 1) - if main_type == 'text': - with open(file, 'rb'): - msg = MIMEText('r', _subtype=sub_type) - elif main_type == 'image': - with open(file, 'rb'): - msg = MIMEImage('r', _subtype=sub_type) - elif main_type == 'audio': - with open(file, 'rb'): - msg = MIMEAudio('r', _subtype=sub_type) - else: - with open(file, 'rb'): - msg = MIMEBase(main_type, sub_type) - msg.set_payload(file.read()) - filename = os.path.basename(file) - msg.add_header('Content-Disposition', 'attachment', filename=filename) - return msg - - if __name__ == '__main__': gmail_send_message_with_attachment() # [END gmail_send_message_with_attachment] From 92fcd92888b86b0cbe84b76cf1b38db4f4f58959 Mon Sep 17 00:00:00 2001 From: lecovi Date: Sat, 4 Jun 2022 17:54:04 -0300 Subject: [PATCH 8/8] fix: updates Python email API at create_draft_with_attachment.py example --- .../send mail/create_draft_with_attachment.py | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/gmail/snippet/send mail/create_draft_with_attachment.py b/gmail/snippet/send mail/create_draft_with_attachment.py index e9281635..4b9e4fee 100644 --- a/gmail/snippet/send mail/create_draft_with_attachment.py +++ b/gmail/snippet/send mail/create_draft_with_attachment.py @@ -24,6 +24,7 @@ from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText +from email.message import EmailMessage import google.auth from googleapiclient.discovery import build @@ -44,15 +45,29 @@ def gmail_create_draft_with_attachment(): try: # create gmail api client service = build('gmail', 'v1', credentials=creds) - mime_message = MIMEMultipart() + mime_message = EmailMessage() + + # headers mime_message['To'] = 'gduser1@workspacesamples.dev' mime_message['From'] = 'gduser2@workspacesamples.dev' mime_message['Subject'] = 'sample with attachment' - text_part = MIMEText('Hi, this is automated mail with attachment.' - 'Please do not reply.') - mime_message.attach(text_part) - image_attachment = build_file_part(file='photo.jpg') - mime_message.attach(image_attachment) + + # text + mime_message.set_content( + 'Hi, this is automated mail with attachment.' + 'Please do not reply.' + ) + + # attachment + attachment_filename = 'photo.jpg' + # guessing the MIME type + type_subtype, _ = mimetypes.guess_type(attachment_filename) + maintype, subtype = type_subtype.split('/') + + with open(attachment_filename, 'rb') as fp: + attachment_data = fp.read() + mime_message.add_attachment(attachment_data, maintype, subtype) + encoded_message = base64.urlsafe_b64encode(mime_message.as_bytes()).decode() create_draft_request_body = {