<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.settings.html">settings</a> . <a href="gmail_v1.users.settings.sendAs.html">sendAs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="gmail_v1.users.settings.sendAs.smimeInfo.html">smimeInfo()</a></code>
</p>
<p class="firstline">Returns the smimeInfo Resource.</p>

<p class="toc_element">
  <code><a href="#create">create(userId, body)</a></code></p>
<p class="firstline">Creates a custom "from" send-as alias. If an SMTP MSA is specified, Gmail will attempt to connect to the SMTP service to validate the configuration before creating the alias. If ownership verification is required for the alias, a message will be sent to the email address and the resource's verification status will be set to pending; otherwise, the resource will be created with verification status set to accepted. If a signature is provided, Gmail will sanitize the HTML before saving it with the alias.</p>
<p class="toc_element">
  <code><a href="#delete">delete(userId, sendAsEmail)</a></code></p>
<p class="firstline">Deletes the specified send-as alias. Revokes any verification that may have been required for using it.</p>
<p class="toc_element">
  <code><a href="#get">get(userId, sendAsEmail)</a></code></p>
<p class="firstline">Gets the specified send-as alias. Fails with an HTTP 404 error if the specified address is not a member of the collection.</p>
<p class="toc_element">
  <code><a href="#list">list(userId)</a></code></p>
<p class="firstline">Lists the send-as aliases for the specified account. The result includes the primary send-as address associated with the account as well as any custom "from" aliases.</p>
<p class="toc_element">
  <code><a href="#patch">patch(userId, sendAsEmail, body)</a></code></p>
<p class="firstline">Updates a send-as alias. If a signature is provided, Gmail will sanitize the HTML before saving it with the alias.</p>
<p class="toc_element">
  <code><a href="#update">update(userId, sendAsEmail, body)</a></code></p>
<p class="firstline">Updates a send-as alias. If a signature is provided, Gmail will sanitize the HTML before saving it with the alias.</p>
<p class="toc_element">
  <code><a href="#verify">verify(userId, sendAsEmail)</a></code></p>
<p class="firstline">Sends a verification email to the specified send-as alias address. The verification status must be pending.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(userId, body)</code>
  <pre>Creates a custom "from" send-as alias. If an SMTP MSA is specified, Gmail will attempt to connect to the SMTP service to validate the configuration before creating the alias. If ownership verification is required for the alias, a message will be sent to the email address and the resource's verification status will be set to pending; otherwise, the resource will be created with verification status set to accepted. If a signature is provided, Gmail will sanitize the HTML before saving it with the alias.

This method is only available to service account clients that have been delegated domain-wide authority.

Args:
  userId: string, 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:

{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
  "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
    "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
    "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
    "host": "A String", # The hostname of the SMTP service. Required.
    "password": "A String", # The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
    "port": 42, # The port of the SMTP service. Required.
  },
  "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail.
  "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
  "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
  "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
  "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
  "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
  "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
  "isDefault": True or False, # Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is true. Changing this from false to true for an address will result in this field becoming false for the other previous default address.
}


Returns:
  An object of the form:

    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
    "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
      "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
      "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
      "host": "A String", # The hostname of the SMTP service. Required.
      "password": "A String", # The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
      "port": 42, # The port of the SMTP service. Required.
    },
    "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail.
    "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
    "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
    "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
    "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
    "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
    "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
    "isDefault": True or False, # Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is true. Changing this from false to true for an address will result in this field becoming false for the other previous default address.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(userId, sendAsEmail)</code>
  <pre>Deletes the specified send-as alias. Revokes any verification that may have been required for using it.

This method is only available to service account clients that have been delegated domain-wide authority.

Args:
  userId: string, User's email address. The special value "me" can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The send-as alias to be deleted. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(userId, sendAsEmail)</code>
  <pre>Gets the specified send-as alias. Fails with an HTTP 404 error if the specified address is not a member of the collection.

Args:
  userId: string, User's email address. The special value "me" can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The send-as alias to be retrieved. (required)

Returns:
  An object of the form:

    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
    "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
      "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
      "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
      "host": "A String", # The hostname of the SMTP service. Required.
      "password": "A String", # The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
      "port": 42, # The port of the SMTP service. Required.
    },
    "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail.
    "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
    "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
    "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
    "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
    "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
    "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
    "isDefault": True or False, # Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is true. Changing this from false to true for an address will result in this field becoming false for the other previous default address.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId)</code>
  <pre>Lists the send-as aliases for the specified account. The result includes the primary send-as address associated with the account as well as any custom "from" aliases.

Args:
  userId: string, User's email address. The special value "me" can be used to indicate the authenticated user. (required)

Returns:
  An object of the form:

    { # Response for the ListSendAs method.
    "sendAs": [ # List of send-as aliases.
      { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
        "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
          "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
          "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
          "host": "A String", # The hostname of the SMTP service. Required.
          "password": "A String", # The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
          "port": 42, # The port of the SMTP service. Required.
        },
        "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail.
        "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
        "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
        "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
        "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
        "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
        "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
        "isDefault": True or False, # Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is true. Changing this from false to true for an address will result in this field becoming false for the other previous default address.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(userId, sendAsEmail, body)</code>
  <pre>Updates a send-as alias. If a signature is provided, Gmail will sanitize the HTML before saving it with the alias.

Addresses other than the primary address for the account can only be updated by service account clients that have been delegated domain-wide authority. This method supports patch semantics.

Args:
  userId: string, User's email address. The special value "me" can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The send-as alias to be updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
  "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
    "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
    "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
    "host": "A String", # The hostname of the SMTP service. Required.
    "password": "A String", # The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
    "port": 42, # The port of the SMTP service. Required.
  },
  "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail.
  "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
  "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
  "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
  "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
  "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
  "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
  "isDefault": True or False, # Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is true. Changing this from false to true for an address will result in this field becoming false for the other previous default address.
}


Returns:
  An object of the form:

    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
    "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
      "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
      "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
      "host": "A String", # The hostname of the SMTP service. Required.
      "password": "A String", # The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
      "port": 42, # The port of the SMTP service. Required.
    },
    "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail.
    "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
    "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
    "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
    "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
    "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
    "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
    "isDefault": True or False, # Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is true. Changing this from false to true for an address will result in this field becoming false for the other previous default address.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(userId, sendAsEmail, body)</code>
  <pre>Updates a send-as alias. If a signature is provided, Gmail will sanitize the HTML before saving it with the alias.

Addresses other than the primary address for the account can only be updated by service account clients that have been delegated domain-wide authority.

Args:
  userId: string, User's email address. The special value "me" can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The send-as alias to be updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
  "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
    "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
    "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
    "host": "A String", # The hostname of the SMTP service. Required.
    "password": "A String", # The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
    "port": 42, # The port of the SMTP service. Required.
  },
  "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail.
  "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
  "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
  "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
  "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
  "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
  "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
  "isDefault": True or False, # Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is true. Changing this from false to true for an address will result in this field becoming false for the other previous default address.
}


Returns:
  An object of the form:

    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
    "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
      "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
      "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
      "host": "A String", # The hostname of the SMTP service. Required.
      "password": "A String", # The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
      "port": 42, # The port of the SMTP service. Required.
    },
    "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail.
    "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
    "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
    "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
    "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
    "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
    "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
    "isDefault": True or False, # Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is true. Changing this from false to true for an address will result in this field becoming false for the other previous default address.
  }</pre>
</div>

<div class="method">
    <code class="details" id="verify">verify(userId, sendAsEmail)</code>
  <pre>Sends a verification email to the specified send-as alias address. The verification status must be pending.

This method is only available to service account clients that have been delegated domain-wide authority.

Args:
  userId: string, User's email address. The special value "me" can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The send-as alias to be verified. (required)
</pre>
</div>

</body></html>