[英]Send Reply to email thread using Gmail API
我正在尝试回复我发送给自己的电子邮件,电子邮件的主题是“测试函数”我有一个函数 subject() 返回主题、message_id 和 thread_id 如下(“测试函数”、“DEFxmu7HPSRAti50ki2i6PK_DOOPLwMm5fiR+_dPkcOR7mep7hQ@ mail.gmail.com', '166e2507fc661924')
我的完整代码是:
def create_message(sender, to, message_id, thread_id, subject, message_text):
message = MIMEText(message_text)
message['from'] = sender
message['to'] = to
message['In-Reply-To'] = message_id
message['References'] = message_id
message['threadId'] = thread_id
message['subject'] = subject
return {'raw': base64.urlsafe_b64encode(message.as_string().encode()).decode()}
def send_message(service, user_id, message):
message = (service.users().messages().send(userId="me",
body=message).execute())
print('Message Id: %s' % message['id'])
return message
def send_email(orders):
SCOPES = 'https://mail.google.com/'
credentials = auth.get_user_oauth2_credentials(scopes=SCOPES,
client_id='xxxxx',
client_secret='xxxxxx')
service = discovery.build('gmail','v1', credentials=credentials)
message_text = orders[0]
created_message = create_message('th14@gmail.com','th14@gmail.com',
subject()[1],subject()[2], subject()[0], message_text)
send_message(service, 'me', created_message)
send_email(['Msg Received'])
它发送电子邮件但不发送到所需的线程,只发送一封新电子邮件。
根据此文档 ,您可以在插入或发送消息的过程中向线程添加消息。
为了成为主题的一部分,消息或草稿必须满足以下条件:
- 必须在随请求提供的
Message
或Draft.Message
上指定请求的threadId
。References
和In-Reply-To
标头必须符合RFC 2822标准进行设置。Subject
标题必须匹配。
检查此链接以获取其他参考: 如何使用Gmail API发送回复
您需要添加threadId
到你的回报create_message
功能。
return {
'raw': base64.urlsafe_b64encode(message.as_string().encode()).decode(),
'threadId':thread_id
}
另外,删除message['threadId'] = thread_id
def create_message(sender, to, message_id, thread_id, subject, message_text):
message = MIMEText(message_text)
message['from'] = sender
message['to'] = to
message['In-Reply-To'] = message_id
message['References'] = message_id
message['subject'] = subject
return {
'raw': base64.urlsafe_b64encode(message.as_string().encode()).decode(),
'threadId':thread_id
}
现在只需调用send_message
传递从上面的函数创建的消息:假设subject()[1] = "$your_thread_id"
SCOPES = 'https://mail.google.com/'
credentials = auth.get_user_oauth2_credentials(scopes=SCOPES,
client_id='xxxxx',
client_secret='xxxxxx')
service = discovery.build('gmail','v1', credentials=credentials)
message_text = orders[0]
created_message = create_message('th14@gmail.com','th14@gmail.com',
subject()[1],subject()[2], subject()[0], message_text)
send_message(service, 'me', created_message)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.