# Gmail API . users . messages

## Instance Methods

Returns the attachments Resource.

Immediately and permanently deletes the specified message. This operation cannot be undone. Prefer messages.trash instead.

Gets the specified message.

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.

Directly inserts a message into only this user's mailbox similar to IMAP APPEND, bypassing most scanning and classification. Does not send a message.

Lists the messages in the user's mailbox.

Retrieves the next page of results.

Modifies the labels on the specified message.

Sends the specified message to the recipients in the To, Cc, and Bcc headers.

Moves the specified message to the trash.

Removes the specified message from the trash.

### Method Details

`delete(userId, id)`

    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)

`get(userId, id, format=None, metadataHeaders=None)`

    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. 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, # Total number of bytes in the body of the message part.
          },
          "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.
      }

`import_(userId, body=None, media_body=None, internalDateSource=None, neverMarkSpam=None, processForCalendar=None, deleted=None)`

    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. 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, # Total number of bytes in the body of the message part.
        },
        "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.
      processForCalendar: boolean, Process calendar invites in the email and add any extracted meetings to the Google Calendar for this user.
      deleted: boolean, Mark the email as permanently deleted (not TRASH) and only visible in Google Apps Vault to a Vault administrator. Only used for Google Apps for Work 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. 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, # Total number of bytes in the body of the message part.
          },
          "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.
      }

`insert(userId, body=None, media_body=None, internalDateSource=None, deleted=None)`

    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. 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, # Total number of bytes in the body of the message part.
        },
        "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 -
      deleted: boolean, Mark the email as permanently deleted (not TRASH) and only visible in Google Apps Vault to a Vault administrator. Only used for Google Apps for Work 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. 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, # Total number of bytes in the body of the message part.
          },
          "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.
      }

`list(userId, labelIds=None, q=None, pageToken=None, maxResults=None, includeSpamTrash=None)`

    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: is:unread".
      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.
          { # 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. 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, # Total number of bytes in the body of the message part.
              },
              "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.
          },
        ],
      }

`list_next(previous_request, previous_response)`

    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.

`modify(userId, id, body)`

    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. 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, # Total number of bytes in the body of the message part.
          },
          "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.
      }

`send(userId, body=None, media_body=None)`

    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. 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, # Total number of bytes in the body of the message part.
        },
        "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.

    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. 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, # Total number of bytes in the body of the message part.
          },
          "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.
      }

`trash(userId, id)`

    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. 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, # Total number of bytes in the body of the message part.
          },
          "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.
      }

`untrash(userId, id)`

    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. 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, # Total number of bytes in the body of the message part.
          },
          "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.
      }