{% extends "layouts/workspace_settings.html" %} {% load common_extras %} {% comment %} Connect an email sender. Same shape as telegram_connect.html — see the note there for why content_wrap is cleared and why the platform key is written once. The provider picker is three links rather than the GET form with a submit button it used to be. views_email._chosen_provider reads request.GET, so a link does the whole job: no JavaScript (which the nonce-based CSP would refuse in an onchange anyway), and the page's one primary button is spent on Connect rather than on a control that only changes which fields are visible. Every credential input below is type="password" with autocomplete="off", for the reason the Telegram page gives: these are live credentials and must not end up in the browser's saved form data. None of them is ever echoed back on a failed submit either — the view's `_echoed` names only non-secret fields. {% endcomment %} {% block title %}Connect email · DemandTrail Messaging{% endblock %} {% block content_wrap %}{% endblock %} {% block content %} {% with platform_key="email" %}
Email is outbound only. DemandTrail Messaging sends through your own provider: your SMTP server, Resend, or Amazon SES. So the sending reputation, the domain and the bill stay yours.
Pick one and the fields below change to match.
We check the credentials with your provider before saving anything. Once the channel exists, its page shows the webhook URL to paste into Resend or to subscribe an SNS topic to, and a button that sends a test email to your own address.
Every email DemandTrail Messaging sends carries a List-Unsubscribe header and an
unsubscribe link in the footer. That is not configurable: it is what keeps the channel
compliant, and it is what the unsubscribe and suppression handling is built on.