<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="gmail_v1.html">Gmail API</a> . <a href="gmail_v1.users.html">users</a> . <a href="gmail_v1.users.messages.html">messages</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="gmail_v1.users.messages.attachments.html">attachments()</a></code>
</p>
<p class="firstline">Returns the attachments Resource.</p>

<p class="toc_element">
  <code><a href="#batchDelete">batchDelete(userId, body)</a></code></p>
<p class="firstline">Deletes many messages by message ID. Provides no guarantees that messages were not already deleted or even existed at all.</p>
<p class="toc_element">
  <code><a href="#batchModify">batchModify(userId, body)</a></code></p>
<p class="firstline">Modifies the labels on the specified messages.</p>
<p class="toc_element">
  <code><a href="#delete">delete(userId, id)</a></code></p>
<p class="firstline">Immediately and permanently deletes the specified message. This operation cannot be undone. Prefer messages.trash instead.</p>
<p class="toc_element">
  <code><a href="#get">get(userId, id, format=None, metadataHeaders=None)</a></code></p>
<p class="firstline">Gets the specified message.</p>
<p class="toc_element">
  <code><a href="#import_">import_(userId, body=None, media_body=None, internalDateSource=None, neverMarkSpam=None, media_mime_type=None, deleted=None, processForCalendar=None)</a></code></p>
<p class="firstline">Imports a message into only this user's mailbox, with standard email delivery scanning and classification similar to receiving via SMTP. Does not send a message.</p>
<p class="toc_element">
  <code><a href="#insert">insert(userId, body=None, media_body=None, internalDateSource=None, media_mime_type=None, deleted=None)</a></code></p>
<p class="firstline">Directly inserts a message into only this user's mailbox similar to IMAP APPEND, bypassing most scanning and classification. Does not send a message.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, labelIds=None, q=None, pageToken=None, maxResults=None, includeSpamTrash=None)</a></code></p>
<p class="firstline">Lists the messages in the user's mailbox.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#modify">modify(userId, id, body)</a></code></p>
<p class="firstline">Modifies the labels on the specified message.</p>
<p class="toc_element">
  <code><a href="#send">send(userId, body=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Sends the specified message to the recipients in the To, Cc, and Bcc headers.</p>
<p class="toc_element">
  <code><a href="#trash">trash(userId, id)</a></code></p>
<p class="firstline">Moves the specified message to the trash.</p>
<p class="toc_element">
  <code><a href="#untrash">untrash(userId, id)</a></code></p>
<p class="firstline">Removes the specified message from the trash.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchDelete">batchDelete(userId, body)</code>
  <pre>Deletes many messages by message ID. Provides no guarantees that messages were not already deleted or even existed at all.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "ids": [ # The IDs of the messages to delete.
      "A String",
    ],
  }

</pre>
</div>

<div class="method">
    <code class="details" id="batchModify">batchModify(userId, body)</code>
  <pre>Modifies the labels on the specified messages.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "removeLabelIds": [ # A list of label IDs to remove from messages.
      "A String",
    ],
    "ids": [ # The IDs of the messages to modify. There is a limit of 1000 ids per request.
      "A String",
    ],
    "addLabelIds": [ # A list of label IDs to add to messages.
      "A String",
    ],
  }

</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(userId, id)</code>
  <pre>Immediately and permanently deletes the specified message. This operation cannot be undone. Prefer messages.trash instead.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  id: string, The ID of the message to delete. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(userId, id, format=None, metadataHeaders=None)</code>
  <pre>Gets the specified message.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  id: string, The ID of the message to retrieve. (required)
  format: string, The format to return the message in.
    Allowed values
      full - 
      metadata - 
      minimal - 
      raw - 
  metadataHeaders: string, When given and format is METADATA, only include headers specified. (repeated)

Returns:
  An object of the form:

    { # An email message.
    "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "payload": { # A single MIME message part. # The parsed email structure in the message parts.
      "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
        "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
      "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
        {
          "name": "A String", # The name of the header before the : separator. For example, To.
          "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
        },
      ],
      "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
        # Object with schema name: MessagePart
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
    "sizeEstimate": 42, # Estimated size in bytes of the message.
    "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
        # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
        # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
        # - The Subject headers must match.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  }</pre>
</div>

<div class="method">
    <code class="details" id="import_">import_(userId, body=None, media_body=None, internalDateSource=None, neverMarkSpam=None, media_mime_type=None, deleted=None, processForCalendar=None)</code>
  <pre>Imports a message into only this user's mailbox, with standard email delivery scanning and classification similar to receiving via SMTP. Does not send a message.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  body: object, The request body.
    The object takes the form of:

{ # An email message.
  "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
  "historyId": "A String", # The ID of the last history record that modified this message.
  "payload": { # A single MIME message part. # The parsed email structure in the message parts.
    "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
      "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
      "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
      "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
    },
    "mimeType": "A String", # The MIME type of the message part.
    "partId": "A String", # The immutable ID of the message part.
    "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
    "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
      {
        "name": "A String", # The name of the header before the : separator. For example, To.
        "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
      },
    ],
    "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
      # Object with schema name: MessagePart
    ],
  },
  "snippet": "A String", # A short part of the message text.
  "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
  "sizeEstimate": 42, # Estimated size in bytes of the message.
  "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
      # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
      # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
      # - The Subject headers must match.
  "labelIds": [ # List of IDs of labels applied to this message.
    "A String",
  ],
  "id": "A String", # The immutable ID of the message.
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  internalDateSource: string, Source for Gmail's internal date of the message.
    Allowed values
      dateHeader - 
      receivedTime - 
  neverMarkSpam: boolean, Ignore the Gmail spam classifier decision and never mark this email as SPAM in the mailbox.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  deleted: boolean, Mark the email as permanently deleted (not TRASH) and only visible in Google Vault to a Vault administrator. Only used for G Suite accounts.
  processForCalendar: boolean, Process calendar invites in the email and add any extracted meetings to the Google Calendar for this user.

Returns:
  An object of the form:

    { # An email message.
    "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "payload": { # A single MIME message part. # The parsed email structure in the message parts.
      "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
        "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
      "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
        {
          "name": "A String", # The name of the header before the : separator. For example, To.
          "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
        },
      ],
      "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
        # Object with schema name: MessagePart
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
    "sizeEstimate": 42, # Estimated size in bytes of the message.
    "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
        # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
        # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
        # - The Subject headers must match.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(userId, body=None, media_body=None, internalDateSource=None, media_mime_type=None, deleted=None)</code>
  <pre>Directly inserts a message into only this user's mailbox similar to IMAP APPEND, bypassing most scanning and classification. Does not send a message.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  body: object, The request body.
    The object takes the form of:

{ # An email message.
  "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
  "historyId": "A String", # The ID of the last history record that modified this message.
  "payload": { # A single MIME message part. # The parsed email structure in the message parts.
    "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
      "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
      "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
      "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
    },
    "mimeType": "A String", # The MIME type of the message part.
    "partId": "A String", # The immutable ID of the message part.
    "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
    "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
      {
        "name": "A String", # The name of the header before the : separator. For example, To.
        "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
      },
    ],
    "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
      # Object with schema name: MessagePart
    ],
  },
  "snippet": "A String", # A short part of the message text.
  "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
  "sizeEstimate": 42, # Estimated size in bytes of the message.
  "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
      # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
      # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
      # - The Subject headers must match.
  "labelIds": [ # List of IDs of labels applied to this message.
    "A String",
  ],
  "id": "A String", # The immutable ID of the message.
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  internalDateSource: string, Source for Gmail's internal date of the message.
    Allowed values
      dateHeader - 
      receivedTime - 
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  deleted: boolean, Mark the email as permanently deleted (not TRASH) and only visible in Google Vault to a Vault administrator. Only used for G Suite accounts.

Returns:
  An object of the form:

    { # An email message.
    "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "payload": { # A single MIME message part. # The parsed email structure in the message parts.
      "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
        "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
      "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
        {
          "name": "A String", # The name of the header before the : separator. For example, To.
          "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
        },
      ],
      "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
        # Object with schema name: MessagePart
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
    "sizeEstimate": 42, # Estimated size in bytes of the message.
    "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
        # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
        # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
        # - The Subject headers must match.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, labelIds=None, q=None, pageToken=None, maxResults=None, includeSpamTrash=None)</code>
  <pre>Lists the messages in the user's mailbox.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  labelIds: string, Only return messages with labels that match all of the specified label IDs. (repeated)
  q: string, Only return messages matching the specified query. Supports the same query format as the Gmail search box. For example, "from:someuser@example.com rfc822msgid:<somemsgid@example.com> is:unread". Parameter cannot be used when accessing the api using the gmail.metadata scope.
  pageToken: string, Page token to retrieve a specific page of results in the list.
  maxResults: integer, Maximum number of messages to return.
  includeSpamTrash: boolean, Include messages from SPAM and TRASH in the results.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Token to retrieve the next page of results in the list.
    "resultSizeEstimate": 42, # Estimated total number of results.
    "messages": [ # List of messages. Note that each message resource contains only an id and a threadId. Additional message details can be fetched using the messages.get method.
      { # An email message.
        "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
        "historyId": "A String", # The ID of the last history record that modified this message.
        "payload": { # A single MIME message part. # The parsed email structure in the message parts.
          "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
            "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
            "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
          },
          "mimeType": "A String", # The MIME type of the message part.
          "partId": "A String", # The immutable ID of the message part.
          "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
          "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
            {
              "name": "A String", # The name of the header before the : separator. For example, To.
              "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
            },
          ],
          "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
            # Object with schema name: MessagePart
          ],
        },
        "snippet": "A String", # A short part of the message text.
        "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
        "sizeEstimate": 42, # Estimated size in bytes of the message.
        "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
            # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
            # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
            # - The Subject headers must match.
        "labelIds": [ # List of IDs of labels applied to this message.
          "A String",
        ],
        "id": "A String", # The immutable ID of the message.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="modify">modify(userId, id, body)</code>
  <pre>Modifies the labels on the specified message.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  id: string, The ID of the message to modify. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "removeLabelIds": [ # A list IDs of labels to remove from this message.
      "A String",
    ],
    "addLabelIds": [ # A list of IDs of labels to add to this message.
      "A String",
    ],
  }


Returns:
  An object of the form:

    { # An email message.
    "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "payload": { # A single MIME message part. # The parsed email structure in the message parts.
      "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
        "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
      "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
        {
          "name": "A String", # The name of the header before the : separator. For example, To.
          "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
        },
      ],
      "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
        # Object with schema name: MessagePart
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
    "sizeEstimate": 42, # Estimated size in bytes of the message.
    "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
        # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
        # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
        # - The Subject headers must match.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  }</pre>
</div>

<div class="method">
    <code class="details" id="send">send(userId, body=None, media_body=None, media_mime_type=None)</code>
  <pre>Sends the specified message to the recipients in the To, Cc, and Bcc headers.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  body: object, The request body.
    The object takes the form of:

{ # An email message.
  "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
  "historyId": "A String", # The ID of the last history record that modified this message.
  "payload": { # A single MIME message part. # The parsed email structure in the message parts.
    "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
      "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
      "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
      "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
    },
    "mimeType": "A String", # The MIME type of the message part.
    "partId": "A String", # The immutable ID of the message part.
    "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
    "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
      {
        "name": "A String", # The name of the header before the : separator. For example, To.
        "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
      },
    ],
    "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
      # Object with schema name: MessagePart
    ],
  },
  "snippet": "A String", # A short part of the message text.
  "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
  "sizeEstimate": 42, # Estimated size in bytes of the message.
  "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
      # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
      # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
      # - The Subject headers must match.
  "labelIds": [ # List of IDs of labels applied to this message.
    "A String",
  ],
  "id": "A String", # The immutable ID of the message.
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # An email message.
    "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "payload": { # A single MIME message part. # The parsed email structure in the message parts.
      "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
        "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
      "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
        {
          "name": "A String", # The name of the header before the : separator. For example, To.
          "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
        },
      ],
      "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
        # Object with schema name: MessagePart
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
    "sizeEstimate": 42, # Estimated size in bytes of the message.
    "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
        # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
        # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
        # - The Subject headers must match.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  }</pre>
</div>

<div class="method">
    <code class="details" id="trash">trash(userId, id)</code>
  <pre>Moves the specified message to the trash.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  id: string, The ID of the message to Trash. (required)

Returns:
  An object of the form:

    { # An email message.
    "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "payload": { # A single MIME message part. # The parsed email structure in the message parts.
      "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
        "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
      "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
        {
          "name": "A String", # The name of the header before the : separator. For example, To.
          "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
        },
      ],
      "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
        # Object with schema name: MessagePart
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
    "sizeEstimate": 42, # Estimated size in bytes of the message.
    "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
        # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
        # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
        # - The Subject headers must match.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  }</pre>
</div>

<div class="method">
    <code class="details" id="untrash">untrash(userId, id)</code>
  <pre>Removes the specified message from the trash.

Args:
  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
  id: string, The ID of the message to remove from Trash. (required)

Returns:
  An object of the form:

    { # An email message.
    "internalDate": "A String", # The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the Date header. However, for API-migrated mail, it can be configured by client to be based on the Date header.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "payload": { # A single MIME message part. # The parsed email structure in the message parts.
      "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
        "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
      "headers": [ # List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as To, From, and Subject.
        {
          "name": "A String", # The name of the header before the : separator. For example, To.
          "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
        },
      ],
      "parts": [ # The child MIME message parts of this part. This only applies to container MIME message parts, for example multipart/*. For non- container MIME message part types, such as text/plain, this field is empty. For more information, see RFC 1521.
        # Object with schema name: MessagePart
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "raw": "A String", # The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.
    "sizeEstimate": 42, # Estimated size in bytes of the message.
    "threadId": "A String", # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met:
        # - The requested threadId must be specified on the Message or Draft.Message you supply with your request.
        # - The References and In-Reply-To headers must be set in compliance with the RFC 2822 standard.
        # - The Subject headers must match.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  }</pre>
</div>

</body></html>