> For the complete documentation index, see [llms.txt](https://docs.sudoplatform.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sudoplatform.com/guides/email/email-addresses/send-an-email/email-address-public-information.md).

# Email Address Public Information

When an email address is [provisioned](/guides/email/email-addresses/manage-email-addresses.md#provision-email-address), matching public and private keys are also generated for encrypting messages addressed to and sent from that address.&#x20;

Clients of the Sudo Platform have the ability to lookup public information for email addresses as a means of verifying that an email address exists and to determine the public key to use to encrypt messages addressed to that email address.

Only email addresses that belong a domain managed by a particular Sudo Platform Email Service configuration may be retrieved, i.e., if configured to use `*@domain-1.com`, a lookup for `foo@domain-1.com` would be performed, whereas `bar@domain-2.com` would fail.

The following table describes the available public information for an email address:

| Data             | Definition                                                                                                                                                                                                                                       |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| emailAddress     | Fully qualified email address of the form \<localPart\@domain>, e.g., `example@sudoplatform.com`.                                                                                                                                                |
| keyId            | The unique identifier of the public key associated with the email address                                                                                                                                                                        |
| publicKeyDetails | <p>Details of the public key associated with the email address, including:<br>- publicKey: The key data<br>- keyFormat: The format of the key (RSAPublicKey or SPKI)<br>- The encryption algorithm associated with the key (RSA, ECDSA, etc)</p> |
| enableEncryption | Boolean indicating if the email address is eligible for E2EE within the Sudo Platform                                                                                                                                                            |

## Lookup Email Address Public Information

Public information for email addresses can be retrieved in batches by passing a list of email addresses to the `lookupEmailAddressesPublicInfo` method. This returns a list of `EmailAddressPublicInfo` entries containing `emailAddress` and `publicKey` for each input email address. Items in the result list are returned in the same order as requested.

Failure to return a `EmailAddressPublicInfo` entry for an email address means that either the email address was not found in the system, or it belongs to an unsupported domain. In the event of a partial failure such as this, the result list will contain entries for the success cases only. Failure to retrieve *all* email addresses in a request will result in an empty list.

If all of the email addresses passed into `lookupEmailAddressesPublicInfo` successfully return with their `EmailAddressPublicInfo` and have the `enableEncryption` flag set to `true`, then an Email Message sent to that list of addresses will have E2EE enabled on it.

{% hint style="danger" %}
The maximum number of email addresses provided to the input cannot be more than **50**. Supplying a list larger than this will return a `LimitExceededError`.
{% endhint %}

{% tabs %}
{% tab title="TypeScript" %}

```typescript
// Email addresses to be looked up
const emailAddresses = [
  'email-address-1@domain.com',
  'email-address-2@domain.com',
]

try {
  const input = LookupEmailAddressesPublicInfoInput(
    emailAddresses
  )
  const emailAddressesPublicInfo = await emailClient
    .lookupEmailAddressesPublicInfo(input)
    
  // Assuming `emailAddresses` are within the configued instance of Sudo Platform Email,
  // `emailAddressesPublicInfo` will contain `EmailAddressPublicInfo` for each one
} catch (e) {
  // Handle/notify user of errors
}
```

{% endtab %}

{% tab title="Swift" %}

```swift
// Email addresses to be looked up
let emailAddresses = [
    "email-address-1@domain.com",
    "email-address-2@domain.com"
]

try {
    let input = LookupEmailAddressesPublicInfoInput(
        emailAddresses: emailAddresses
    )
    let emailAddressesPublicInfo = await emailClient
        .lookupEmailAddressesPublicInfo(input)
    
    // Assuming `emailAddresses` are valid email addresses and the
    // user shares the same (*@domain.com in this case) network,
    // `emailAddressesPublicInfo` will contain `EmailAddressPublicInfo`
    // objects for each email address, e.g.:
      
    // emailAddressesPublicInfo[0] --> {
    //   emailAddress: 'email-address-1@domain.com',
    //   publicKey: <public key string>
    // }
      
    // emailAddressesPublicInfo[1] --> {
    //   emailAddress: 'email-address-2@domain.com',
    //   publicKey: <public key string>
    // }
} catch {
    // Handle/notify user of errors
}
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
// Email addresses to be looked up
val addresses = listOf(
    "email-address-1@domain.com",
    "email-address-2@domain.com"
)

launch {
    try {
        val input = LookupEmailAddressesPublicInfoInput(
            emailAddresses = emailAddresses
        )
        val emailAddressesPublicInfo = withContext(Dispatchers.IO) {
            emailClient.lookupEmailAddressesPublicInfo(input)
        }
        
        // If `emailAddresses` are valid email addresses and the
        // user shares the same (*@domain.com in this case) network,
        // `emailAddressesPublicInfo` will contain `EmailAddressPublicInfo`
        // objects for each email address, e.g.:
          
        // emailAddressesPublicInfo[0] --> {
        //   emailAddress: 'email-address-1@domain.com',
        //   publicKey: <public key string>
        // }
          
        // emailAddressesPublicInfo[1] --> {
        //   emailAddress: 'email-address-2@domain.com',
        //   publicKey: <public key string>
        // }
    } catch (e: EmailAddressException) {
        // Handle/notify user of exception
    }
}

```

{% endtab %}
{% endtabs %}
