Gmail API . users . drafts

Instance Methods

create(userId, body=None, media_body=None, media_mime_type=None)

Creates a new draft with the DRAFT label.

delete(userId, id)

Immediately and permanently deletes the specified draft. Does not simply trash it.

get(userId, id, format=None)

Gets the specified draft.

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

Lists the drafts in the user's mailbox.

list_next(previous_request, previous_response)

Retrieves the next page of results.

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

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

update(userId, id, body=None, media_body=None, media_mime_type=None)

Replaces a draft's content.

Method Details

create(userId, body=None, media_body=None, media_mime_type=None)
Creates a new draft with the DRAFT label.

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:

{ # A draft email in the user's mailbox.
    "id": "A String", # The immutable ID of the draft.
    "message": { # An email message. # The message content of the draft.
      "historyId": "A String", # The ID of the last history record that modified this message.
      "id": "A String", # The immutable ID of the 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.
      "labelIds": [ # List of IDs of labels applied to this message.
        "A String",
      ],
      "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.
          "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.
          "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.
          "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
        },
        "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.
          },
        ],
        "mimeType": "A String", # The MIME type of the message part.
        "partId": "A String", # The immutable ID of the message part.
        "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
        ],
      },
      "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.
      "snippet": "A String", # A short part of the message text.
      "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.
    },
  }

  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:

    { # A draft email in the user's mailbox.
      "id": "A String", # The immutable ID of the draft.
      "message": { # An email message. # The message content of the draft.
        "historyId": "A String", # The ID of the last history record that modified this message.
        "id": "A String", # The immutable ID of the 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.
        "labelIds": [ # List of IDs of labels applied to this message.
          "A String",
        ],
        "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.
            "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.
            "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.
            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
          },
          "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.
            },
          ],
          "mimeType": "A String", # The MIME type of the message part.
          "partId": "A String", # The immutable ID of the message part.
          "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
          ],
        },
        "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.
        "snippet": "A String", # A short part of the message text.
        "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.
      },
    }
delete(userId, id)
Immediately and permanently deletes the specified draft. Does not simply trash it.

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 draft to delete. (required)
get(userId, id, format=None)
Gets the specified draft.

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 draft to retrieve. (required)
  format: string, The format to return the draft in.
    Allowed values
      full - 
      metadata - 
      minimal - 
      raw - 

Returns:
  An object of the form:

    { # A draft email in the user's mailbox.
      "id": "A String", # The immutable ID of the draft.
      "message": { # An email message. # The message content of the draft.
        "historyId": "A String", # The ID of the last history record that modified this message.
        "id": "A String", # The immutable ID of the 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.
        "labelIds": [ # List of IDs of labels applied to this message.
          "A String",
        ],
        "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.
            "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.
            "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.
            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
          },
          "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.
            },
          ],
          "mimeType": "A String", # The MIME type of the message part.
          "partId": "A String", # The immutable ID of the message part.
          "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
          ],
        },
        "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.
        "snippet": "A String", # A short part of the message text.
        "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.
      },
    }
list(userId, includeSpamTrash=None, maxResults=None, pageToken=None, q=None)
Lists the drafts 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)
  includeSpamTrash: boolean, Include drafts from SPAM and TRASH in the results.
  maxResults: integer, Maximum number of drafts to return.
  pageToken: string, Page token to retrieve a specific page of results in the list.
  q: string, Only return draft messages matching the specified query. Supports the same query format as the Gmail search box. For example, "from:someuser@example.com rfc822msgid: is:unread".

Returns:
  An object of the form:

    {
    "drafts": [ # List of drafts. Note that the Message property in each Draft resource only contains an id and a threadId. The messages.get method can fetch additional message details.
      { # A draft email in the user's mailbox.
          "id": "A String", # The immutable ID of the draft.
          "message": { # An email message. # The message content of the draft.
            "historyId": "A String", # The ID of the last history record that modified this message.
            "id": "A String", # The immutable ID of the 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.
            "labelIds": [ # List of IDs of labels applied to this message.
              "A String",
            ],
            "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.
                "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.
                "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.
                "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
              },
              "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.
                },
              ],
              "mimeType": "A String", # The MIME type of the message part.
              "partId": "A String", # The immutable ID of the message part.
              "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
              ],
            },
            "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.
            "snippet": "A String", # A short part of the message text.
            "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.
          },
        },
    ],
    "nextPageToken": "A String", # Token to retrieve the next page of results in the list.
    "resultSizeEstimate": 42, # Estimated total number of results.
  }
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.
    
send(userId, body=None, media_body=None, media_mime_type=None)
Sends the specified, existing draft 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:

{ # A draft email in the user's mailbox.
    "id": "A String", # The immutable ID of the draft.
    "message": { # An email message. # The message content of the draft.
      "historyId": "A String", # The ID of the last history record that modified this message.
      "id": "A String", # The immutable ID of the 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.
      "labelIds": [ # List of IDs of labels applied to this message.
        "A String",
      ],
      "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.
          "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.
          "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.
          "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
        },
        "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.
          },
        ],
        "mimeType": "A String", # The MIME type of the message part.
        "partId": "A String", # The immutable ID of the message part.
        "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
        ],
      },
      "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.
      "snippet": "A String", # A short part of the message text.
      "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.
    },
  }

  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.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "id": "A String", # The immutable ID of the 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.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "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.
        "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.
        "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.
        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
      },
      "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.
        },
      ],
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "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
      ],
    },
    "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.
    "snippet": "A String", # A short part of the message text.
    "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.
  }
update(userId, id, body=None, media_body=None, media_mime_type=None)
Replaces a draft's content.

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 draft to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # A draft email in the user's mailbox.
    "id": "A String", # The immutable ID of the draft.
    "message": { # An email message. # The message content of the draft.
      "historyId": "A String", # The ID of the last history record that modified this message.
      "id": "A String", # The immutable ID of the 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.
      "labelIds": [ # List of IDs of labels applied to this message.
        "A String",
      ],
      "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.
          "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.
          "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.
          "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
        },
        "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.
          },
        ],
        "mimeType": "A String", # The MIME type of the message part.
        "partId": "A String", # The immutable ID of the message part.
        "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
        ],
      },
      "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.
      "snippet": "A String", # A short part of the message text.
      "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.
    },
  }

  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:

    { # A draft email in the user's mailbox.
      "id": "A String", # The immutable ID of the draft.
      "message": { # An email message. # The message content of the draft.
        "historyId": "A String", # The ID of the last history record that modified this message.
        "id": "A String", # The immutable ID of the 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.
        "labelIds": [ # List of IDs of labels applied to this message.
          "A String",
        ],
        "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.
            "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.
            "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.
            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
          },
          "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.
            },
          ],
          "mimeType": "A String", # The MIME type of the message part.
          "partId": "A String", # The immutable ID of the message part.
          "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
          ],
        },
        "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.
        "snippet": "A String", # A short part of the message text.
        "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.
      },
    }