> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Email

export const ComponentMetadata = ({warehouses, unsupportedWarehouses = [], componentType, connectionInputs, connectionOutputs}) => {
  const allWarehouses = [...warehouses.map(w => ({
    name: w,
    supported: true
  })), ...unsupportedWarehouses.map(w => ({
    name: w,
    supported: false
  }))];
  return <div style={{
    background: 'var(--colors-background-light, #f9fafb)',
    border: '1px solid var(--colors-border-default, #e5e7eb)',
    borderRadius: '12px',
    padding: '20px 28px',
    marginBottom: '28px',
    boxShadow: '0 1px 4px rgba(0,0,0,0.10)'
  }}>
      <table style={{
    width: '100%',
    borderCollapse: 'collapse'
  }}>
        <tbody>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle',
    width: '180px'
  }}>Project Availability</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>
              <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '8px'
  }}>
                {allWarehouses.map((w, i) => <span key={i} style={{
    background: w.supported ? '#dcfce7' : '#fee2e2',
    color: w.supported ? '#15803d' : '#b91c1c',
    border: `1px solid ${w.supported ? '#bbf7d0' : '#fca5a5'}`,
    borderRadius: '9999px',
    padding: '3px 12px',
    fontSize: '0.85rem',
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
                    {w.name} {w.supported ? '✅' : '❌'}
                  </span>)}
              </div>
            </td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Component Type</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{componentType}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Inputs</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{connectionInputs}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Outputs</td>
            <td style={{
    verticalAlign: 'middle'
  }}>{connectionOutputs}</td>
          </tr>
        </tbody>
      </table>
    </div>;
};

<ComponentMetadata warehouses={["Snowflake", "Databricks", "Amazon Redshift", "Google BigQuery"]} componentType="Orchestration, Test" connectionInputs="One" connectionOutputs="Unlimited" />

The Send Email component allows users to send emails—with or without attachments—via an orchestration pipeline. Users may wish to use this component to send email notifications upon any pipeline failures.

<Note>
  Some SMTP servers will not allow the Sender Address property to be different from the SMTP Username (for example, Outlook and Gmail). This means that whatever is shown in the SMTP Username property will be used as the value of the "From" when the email is sent, and the Sender Address property will be ignored. This is beyond our control.

  Depending on your configuration, it is safest to assume that email is an unencrypted medium. Therefore, it is recommended to avoid including sensitive content in the email Message. Instead, it is recommended to provide trusted URLs through which such context could be securely accessed.

  Depending on the SMTP server, users may need to have Enable SSL/TLS set to Yes and Enable StartTLS set to No, and vice versa.
</Note>

## Properties

<ResponseField name="Name" type="string" required>
  A human-readable name for the component.
</ResponseField>

{/* <!-- param-start:[toRecipients] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="To recipients" type="email address" required>
  Click **+** to add a recipient to send the email to, and then type the recipient's email address into the field. Each recipient must be its own row.
</ResponseField>

{/* <!-- param-start:[ccRecipients] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Cc recipients" type="email address">
  Click **+** to add a recipient to send a carbon copy of the email to, and then type the recipient's email address into the field. Each Cc recipient must be its own row.
</ResponseField>

{/* <!-- param-start:[subject] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Subject" type="string" required>
  A subject for the email.
</ResponseField>

{/* <!-- param-start:[message] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Message" type="string" required>
  The contents of the email body.

  To use variables in this field, type the name of the variable prefixed by the dollar symbol and surrounded by \{ } brackets, as follows: `${variable}`. Once you type `${`, a drop-down list of autocompleted suggested variables will appear. This list updates as you type; for example, if you type `${date`, functions and variables containing `date` will be listed.
</ResponseField>

{/* <!-- param-start:[senderAddress] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Sender address" type="email address" required>
  The email address from which the email is sent.
</ResponseField>

{/* <!-- param-start:[replyAddress] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Reply address" type="email address">
  The address that will receive any recipient and/or Cc replies.
</ResponseField>

{/* <!-- param-start:[smtpUsername] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="SMTP username" type="string" required>
  The username for your SMTP client.
</ResponseField>

{/* <!-- param-start:[smtpPassword] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="SMTP password" type="drop-down" required>
  Choose the secret definition that represents your credentials for this connector.

  If you have not already saved your credentials for this connector as a secret definition, click **Add secret** to create a secret definition representing these credentials. Read [Secrets and secret definitions](/docs/guides/secrets-and-secret-definitions) for details about creating a secret definition.
</ResponseField>

{/* <!-- param-start:[smtpHostname] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="SMTP hostname" type="string" required>
  The host address for your SMTP server. For example, if you use Gmail, the SMTP hostname is smtp.gmail.com. Typically, an SMTP email server address can be found in the "account" or "settings" sections of the email client.
</ResponseField>

{/* <!-- param-start:[smtpPort] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="SMTP port" type="port number" required>
  Set the port. The default port is 25.
</ResponseField>

{/* <!-- param-start:[enableSslTls] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Enable SSL/TLS" type="boolean" required>
  Select whether to enable SSL/TLS encryption.
</ResponseField>

{/* <!-- param-start:[enableStartTls] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Enable StartTLS" type="boolean" required>
  StartTLS is an email protocol command that directs an email server that an email client, including an email client running in a web browser, wants to turn an existing insecure connection into a secure one.
</ResponseField>

{/* <!-- param-start:[s3Location] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="S3 Attachment" type="file editor">
  Search for the file in the S3 bucket you want to attach—rather than manually entering the file path—or select a file from the list of available S3 buckets.

  The URL must be formatted as follows:

  ```
  <account>/<container>/<path>
  ```

  The `S3:` prefix isn't required, but will be accepted:

  ```
  S3://<account>/<container>/<path>
  ```

  [Project and pipeline variables](/docs/guides/variables) can also be used. This is particularly useful when using them in the URL, for example:

  ```
  ${account}/${containerName}/${path}.${filetype}
  ```

  <Warning>
    The file attachment is limited to *one* file and must *not* exceed 10 MB in size.
  </Warning>
</ResponseField>
