مدیریت موضوعات
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Gmail API از منابع Thread
برای گروه بندی پاسخ های ایمیل با پیام اصلی خود در یک گفتگو یا رشته استفاده می کند. این به شما امکان میدهد همه پیامهای موجود در یک مکالمه را به ترتیب بازیابی کنید، و داشتن زمینه یک پیام یا اصلاح نتایج جستجو را آسانتر میکند.
مانند پیامها ، رشتهها نیز ممکن است دارای برچسبهایی باشند. با این حال، برخلاف پیامها، رشتهها را نمیتوان ایجاد کرد، فقط حذف میشوند. با این حال، پیام ها را می توان در یک موضوع درج کرد.
مطالب
در حال بازیابی رشته ها
موضوعات راه ساده ای برای بازیابی پیام ها در یک مکالمه به ترتیب ارائه می دهند. با فهرست کردن مجموعهای از رشتهها، میتوانید پیامها را بر اساس مکالمه گروهبندی کنید و زمینه بیشتری را ارائه دهید. میتوانید فهرستی از رشتهها را با استفاده از روش threads.list
بازیابی کنید یا یک رشته خاص را با threads.get
بازیابی کنید. همچنین می توانید رشته ها را با استفاده از همان پارامترهای پرس و جو که برای منبع Message
وجود دارد فیلتر کنید . اگر هر پیامی در یک رشته با پرس و جو مطابقت داشته باشد، آن رشته در نتیجه برگردانده می شود.
نمونه کد زیر نحوه استفاده از هر دو روش را در نمونه ای نشان می دهد که بیشترین گفتگوها را در صندوق ورودی شما نشان می دهد. روش threads.list
همه شناسههای رشته را واکشی میکند، سپس threads.get
همه پیامهای هر رشته را میگیرد. برای کسانی که 3 یا بیشتر پاسخ دارند، خط Subject
را استخراج می کنیم و موارد خالی را به اضافه تعداد پیام های موجود در رشته نمایش می دهیم. این نمونه کد را نیز در ویدیوی DevByte مربوطه خواهید دید.
افزودن پیشنویسها و پیامها به موضوعات
اگر در حال ارسال یا انتقال پیام هایی هستید که پاسخی به ایمیل دیگری یا بخشی از یک مکالمه است، برنامه شما باید آن پیام را به رشته مرتبط اضافه کند. این کار باعث میشود تا کاربران جیمیل که در مکالمه شرکت میکنند، راحتتر پیام را در متن نگه دارند.
یک پیش نویس را می توان به عنوان بخشی از ایجاد ، به روز رسانی یا ارسال یک پیام پیش نویس به یک رشته اضافه کرد. همچنین می توانید پیامی را به عنوان بخشی از درج یا ارسال پیام به یک رشته اضافه کنید.
برای اینکه بخشی از یک موضوع باشد، یک پیام یا پیش نویس باید معیارهای زیر را داشته باشد:
-
threadId
درخواستی باید در Message
یا Draft.Message
که با درخواست خود ارائه می کنید مشخص شود. - هدرهای
References
و In-Reply-To
باید مطابق با استاندارد RFC 2822 تنظیم شوند. - سرصفحه های
Subject
باید مطابقت داشته باشند.
به ایجاد یک پیش نویس یا ارسال یک پیام نمونه نگاه کنید. در هر دو مورد، شما به سادگی یک کلید threadId
جفت شده با شناسه رشته را به ابرداده پیام، شی message
، اضافه می کنید.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Managing Threads\n\nThe Gmail API uses [`Thread` resources](/workspace/gmail/api/v1/reference/users/threads)\nto group email replies with their original message into a single conversation or\nthread. This allows you to retrieve all messages in a conversation, in order,\nmaking it easier to have context for a message or to refine search results.\n\nLike [messages](/workspace/gmail/api/v1/reference/users/messages), threads may also have\nlabels applied to them. However, unlike messages, threads cannot be created,\nonly deleted. Messages can, however, be inserted into a thread.\n\nContents\n--------\n\nRetrieving threads\n------------------\n\nThreads provide a simple way of retrieving messages in a conversation in order.\nBy listing a set of threads you can choose to group messages by conversation\nand provide additional context. You can retrieve a list of threads using the\n[`threads.list`](/workspace/gmail/api/v1/reference/users/threads/list) method, or retrieve\na specific thread with\n[`threads.get`](/workspace/gmail/api/v1/reference/users/threads/list). You can also\n[filter threads](/workspace/gmail/api/guides/filtering) using the same query parameters as\nfor the [`Message` resource](/workspace/gmail/api/v1/reference/users/messages). If any\nmessage in a thread matches the query, that thread is returned in the result. \n\nThe code sample below demonstrates how to use both methods in a sample that\ndisplays the most chatty threads in your inbox. The `threads.list` method\nfetches all thread IDs, then `threads.get` grabs all messages in each thread.\nFor those with 3 or more replies, we extract the `Subject` line and display the\nnon-empty ones plus the number of messages in the thread. You'll also find this\ncode sample featured in the corresponding DevByte video.\n\n### Python\n\ngmail/snippet/thread/threads.py \n[View on GitHub](https://github.com/googleworkspace/python-samples/blob/main/gmail/snippet/thread/threads.py) \n\n```python\nimport google.auth\nfrom googleapiclient.discovery import build\nfrom googleapiclient.errors import HttpError\n\n\ndef show_chatty_threads():\n \"\"\"Display threads with long conversations(\u003e= 3 messages)\n Return: None\n\n Load pre-authorized user credentials from the environment.\n TODO(developer) - See https://developers.google.com/identity\n for guides on implementing OAuth2 for the application.\n \"\"\"\n creds, _ = google.auth.default()\n\n try:\n # create gmail api client\n service = build(\"gmail\", \"v1\", credentials=creds)\n\n # pylint: disable=maybe-no-member\n # pylint: disable:R1710\n threads = (\n service.users().threads().list(userId=\"me\").execute().get(\"threads\", [])\n )\n for thread in threads:\n tdata = (\n service.users().threads().get(userId=\"me\", id=thread[\"id\"]).execute()\n )\n nmsgs = len(tdata[\"messages\"])\n\n # skip if \u003c3 msgs in thread\n if nmsgs \u003e 2:\n msg = tdata[\"messages\"][0][\"payload\"]\n subject = \"\"\n for header in msg[\"headers\"]:\n if header[\"name\"] == \"Subject\":\n subject = header[\"value\"]\n break\n if subject: # skip if no Subject line\n print(f\"- {subject}, {nmsgs}\")\n return threads\n\n except HttpError as error:\n print(f\"An error occurred: {error}\")\n\n\nif __name__ == \"__main__\":\n show_chatty_threads()\n```\n\nAdding drafts and messages to threads\n-------------------------------------\n\nIf you are sending or migrating messages that are a response to another email\nor part of a conversation, your application should add that message to the\nrelated thread. This makes it easier for Gmail users who are participating in\nthe conversation to keep the message in context.\n\nA draft can be added to a thread as part of\n[creating](/workspace/gmail/api/v1/reference/users/drafts/create),\n[updating](/workspace/gmail/api/v1/reference/users/drafts/update), or\n[sending](/workspace/gmail/api/v1/reference/users/drafts/send) a draft message.\nYou can also add a message to a thread as part of\n[inserting](/workspace/gmail/api/v1/reference/users/messages/insert) or\n[sending](/workspace/gmail/api/v1/reference/users/messages/send) a message.\n\nIn order to be part of a thread, a message or draft must meet the following\ncriteria:\n\n1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request.\n2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822#appendix-A.2) standard.\n3. The `Subject` headers must match.\n\nTake a look at the [creating a draft](/workspace/gmail/api/guides/drafts) or [sending a\nmessage](/workspace/gmail/api/guides/sending) examples. In both cases, you would simply\nadd a `threadId` key paired with a thread ID to a message's metadata, the\n`message` object."]]