python - 使用 Gmail API 向电子邮件线程发送回复
问题描述
我正在尝试回复我发送给自己的电子邮件,电子邮件的主题是“测试函数”我有一个函数 subject(),它返回下面的主题、消息 ID 和线程 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'])
它发送电子邮件但不发送到所需的线程,只是发送一封新电子邮件。
解决方案
为了成为线程的一部分,消息或草稿必须满足以下条件:
- 请求
threadId
必须在您的请求中指定Message
或Draft.Message
您提供。2.References
和In-Reply-To
头必须按照RFC 2822标准设置。3.Subject
标题必须匹配。
检查此链接以获取更多参考:如何使用 Gmail API 发送回复
推荐阅读
- android - 如何从 Adobe Xd 文件参考设计 Android UI xml 文件?
- ksqldb - ksqldb cli 无法终止查询:等待命令主题使用者处理命令主题时超时
- php - 通过 actions() 在 Yii2 控制器中指定动作的请求动词
- bash - 动态设置 KUBECONFIG 环境变量
- c - 通过使用带有或不带有 & 符号的 scanf 来消除分段错误
- xaml - Xamarin Forms:无法更新 UI 上的自定义控件
- c - 无法在 ssl/tls 中获取客户端证书
- highcharts - 用情节带或区域突出周末
- java - 如何删除 .camel 子文件夹中的旧文件?
- reactjs - 如何仅使用 Gulp 和 Browserify 在 React 中消除死代码?