使用 Gmail API 发送回复到电子邮件线程

2023-12-06

我正在尝试回复我发送给自己的电子邮件,电子邮件的主题是“测试功能” 我有一个函数 subject() ,它返回下面的 subject、message_id 和 thread_id ('测试功能', 'DEFxmu7HPSRAti50ki2i6PK_D[电子邮件受保护]', '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('[email protected]','[email protected]', 
        subject()[1],subject()[2], subject()[0], message_text)
    send_message(service, 'me', created_message)

send_email(['Msg Received'])

它发送电子邮件,但不发送到所需的线程,仅发送一封新电子邮件。


你需要添加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('[email protected]','[email protected]', 
    subject()[1],subject()[2], subject()[0], message_text)
send_message(service, 'me', created_message)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gmail API 发送回复到电子邮件线程 的相关文章

  • 尽管极其懒惰,但如何在 Python 中模拟 IMAP 服务器?

    我很好奇是否有一种简单的方法来模拟 IMAP 服务器 例如imaplib模块 在Python中 without做很多工作 是否有预先存在的解决方案 理想情况下 我可以连接到现有的 IMAP 服务器 进行转储 并让模拟服务器在真实的邮箱 电子
  • 如何在刻度标签和轴之间添加空间

    我已成功增加刻度标签的字体 但现在它们距离轴太近了 我想在刻度标签和轴之间添加一点呼吸空间 如果您不想全局更改间距 通过编辑 rcParams 并且想要更简洁的方法 请尝试以下操作 ax tick params axis both whic
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • Firebase UI 回收器适配器中的不同子集合

    我正在尝试获取不同的子集合并使它们适应我的RecyclerAdapter与 Firebase UI 我的Cloud Firestore设置如下 user Collection uid1 Document name email fields
  • 将 XML 文档导入 Rails 数据库?

    我一直在阅读一个又一个的教程 但似乎没有什么对我有用 目标是获取包含元素和属性的 XML 文档并将数据插入数据库中 每个元素 属性将是数据库中的一列 每个条目是一行 这是我一直在使用的虚构 XML 文档
  • 使用 html 链接打开 Android 日历

    我需要在 Android 设备上打开日历应用程序 使用简单的 html 链接 我可以在 iOS 中使用 href CALSHOW 执行此操作 安卓有类似的东西吗 或者有什么解决方法吗 提前致谢 在 Android 上 有一种比 ios ur
  • numpy.random.shuffle 返回 None

    我安装了numpy1 8 2然后我尝试了以下代码 import numpy as np a np arange 10 print a np random shuffle a 但它的输出是 0 1 2 3 4 5 6 7 8 9 None 我
  • heroku:Spring Boot 仅使用 https 访问端点

    我在heroku 上部署了一个Spring Boot java 应用程序 我想确保我的注册端点只能通过 https 访问 到目前为止我知道 heroku 使用负载均衡器 它将每个 https 连接重定向到带有特殊标头 X forwarded
  • Apache Spark-reducebyKey-Java-

    我正在尝试了解reduceByKeySpark中使用java作为编程语言 假设我有一句话 我就是我 我将句子分解成单词并将其存储为列表 I am who I am 现在这个函数分配1对每个单词 JavaPairRDD
  • java正则表达式插入字符作为特定索引位置

    我需要简单地在字符串的第三个位置插入字符 ie EURUSD 变成 EUR USD 我正在使用一些程序 GUI 来执行此操作 它接受正则表达式模式和替换 我知道这一定非常简单 但我似乎找不到简单的答案 Replace 3 3 3 人物 位于
  • 从正在运行的程序中获取变量

    我有一个运行数天的脚本 里面有一个计数器 计数器定期写入文件 是否可以从另一个 python 脚本 linux 命令甚至 java 找出计数器设置的值 简单的Python计数器示例 import time import random a 0
  • FragmentOnAttachListener 在片段附加到其主机后不会每次都调用

    最近google对android的改动中 Fragment 1 3 0版本还添加了新的FragmentOnAttachListener接口来替代不太灵活的onAttachFragment方法 如在document提及 此方法已被弃用 的责任
  • Pandas - 扩大平均会话时间

    以下 DF 表示从用户收到的事件 用户 ID 和事件时间戳 id timestamp 0 1 2020 09 01 18 14 35 1 1 2020 09 01 18 14 39 2 1 2020 09 01 18 14 40 3 1 2
  • 通过 Python 获取 MAPLE 的输出

    如何使用 Python 中的 subprocess 模块启动 MAPLE 的命令行实例以将输出提供并返回到主代码 例如我想要 X 1 1 print MAPLE X 返回值 2 我见过的最好的方法是围绕 MAPLE 命令的 SAGE 包装器
  • 使用 Pybind11 将 Eigen::Tensor 暴露给 Python

    我正在尝试使用 pybind11 将特征张量暴露给 python 我可以毫无问题地编译所有内容 并可以成功地将其导入到 python 中 但是 数据无法转换为python类型 我尝试了两种方法 一是直接公开数据 二是使用映射 两者都在 py
  • 在Python中按频率对列表列表进行排序

    我正在尝试按出现频率对 Python 中的列表项列表进行排序 未排序的列表看起来像这样 a item1 item2 element2 item3 item4 element3 item5 item6 element1 item7 item8
  • 即使使用 C3P0 + 显式 session.close(),Hibernate 连接也不会关闭

    Hibernate 到 MySQL 我的数据库的连接没有关闭 在大约 10 秒内单击 10 次后 我从 MySQL Workbench 在我的开发机器中 我是唯一的用户 获取了此连接统计信息 MySQL Workbench 服务器状态 我已
  • 如何匹配从标准输入读取的字符串? [复制]

    这个问题在这里已经有答案了 在学习 Rust 的练习中 我正在尝试一个简单的程序 它将接受您的姓名 然后在有效的情况下打印您的姓名 只有 Alice 和 Bob 是有效名称 use std io fn main println What s
  • 301 通过 .htaccess 将 *.php 重定向到 *.html?

    目前 我正在 htaccess 中将所有传入的 html 请求重写为 php RewriteEngine on RewriteCond HTTP HOST example com NC RewriteRule http www exampl
  • div 内选定的文本

    我想要这段文字在里面 div 页面加载时突出显示 选择用于复制 div This is sample text div 我尝试过的 document ready function sample div select 因此 如果我假设正确 您
  • 使用 UICollectionViewCompositionalLayout 水平滚动多个部分

    是否可以使用UICollectionViewCompositionalLayout创建一个包含多个部分的水平滚动集合视图 我正在创建一个类似于表情符号键盘的布局 它有多个部分 每个部分都附加到前一个部分的末尾 在一个水平滚动的 组 中 标题
  • 如何在 Angular 6+ 中使用 MSADAL 的 RenewToken 方法?

    我正在使用 MS Adal NPM 包 https www npmjs com package microsoft adal angular6 让 Angular 6 使用户通过 Azure AD 进行身份验证 我正在使用隐式流来获取访问令
  • 使用 Gmail API 发送回复到电子邮件线程

    我正在尝试回复我发送给自己的电子邮件 电子邮件的主题是 测试功能 我有一个函数 subject 它返回下面的 subject message id 和 thread id 测试功能 DEFxmu7HPSRAti50ki2i6PK D 电子邮