Я пытаюсь отправить существующее письмо в другой поток, используя API Gmail во Flask.
Контекст: Я создал новый объект сообщенияи успешно сделали In-Reply-To
, References
и threadId
равными message_id
и thread_id
соответственно. (Следуя Справка по API Gmail )
def create_message(sender, to, subject, thread_id, message_id, message_text, service):
"""Create a message for an email.
Args:
sender: Email address of the sender.
to: Email address of the receiver.
subject: The subject of the email message.
message_text: The text of the email message.
Returns:
An object containing a base64url encoded email object.
"""
if type(message_text) != str:
message_text = str(message_text)
message = MIMEText(message_text)
message['to'] = to
message['from'] = sender
message['subject'] = subject
message['In-Reply-To'] = message_id
message['References'] = message_id
message['threadId'] = thread_id
print('created message threadId: %s does == ..' %message['threadId'])
print(thread_id)
raw = base64.urlsafe_b64encode(message.as_bytes())
raw = raw.decode()
body = {'raw': raw}
messages = service.users().messages()
send = messages.send(userId='me', body=body).execute()
Проблема: Я могу успешно отправлять новые сообщения в свой почтовый ящик, но они создаются с новым threadId
, хотя оператор печати в приведенном выше коде показывает то же самое threadId
.
Затем, когда я следую примеру кода из этой темы :
body = {'message': {'raw': raw, 'threadId': thread_id}}
Я получаю следующую ошибку:
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/send?alt=json returned "'raw' RFC822 payload message string or uploading message via /upload/* URL required">
Вопрос: Как я могу сгенерировать эти электронные письма, чтобы они соответствовали тем же threadId
?
Примечание: Я нашел похожие вопросы здесь для javascript и здесь для java , но не нашел ответа для python.