Email Settings
These are Endatix API settings (appsettings.json). They pick the mail provider and overlay identity-template senders. Hub’s .env does not hold SMTP keys.
- Code: activate a provider — Email Providers
- Hub UI: review the live provider and send a test — Email Settings (Platform Admin)
- Links inside emails: API Hub URL (
Endatix:Hub:HubBaseUrl)
Template HTML, subject, and a default FromAddress live in the seeded database. Until Hub can edit those rows, hosts change the sender in config — no database edit required.
Email providers
Provider settings bind under Endatix:Integrations:Email:{SettingsClassName}. SMTP is the default provider and does not require explicit activation.
Store API keys and SMTP passwords in environment variables or a secrets manager. Do not commit production credentials.
SendGrid
To use SendGrid as your email provider, you need to configure the SendGridSettings section. The Endatix API uses the official SendGrid APIs to deliver emails reliably.
Configuration Example
{
"Endatix": {
"Integrations": {
"Email": {
"SendGridSettings": {
"ApiKey": "SG.your_api_key_here",
"DefaultFromAddress": "noreply@yourdomain.com",
"DefaultFromName": "Endatix Notifications"
}
}
}
}
}
Properties
ApiKey(Required): Your SendGrid API key with "Mail Send" permissions.DefaultFromAddress(Required): The verified sender email address configured in your SendGrid account.DefaultFromName: The display name for the sender.
For implementation details, refer to SendGridSettings.cs.
Mailgun
To use Mailgun, configure the MailgunSettings section. This integration uses the Mailgun REST API.
Configuration Example
{
"Endatix": {
"Integrations": {
"Email": {
"MailgunSettings": {
"ApiKey": "key-your_mailgun_api_key",
"Domain": "mg.yourdomain.com",
"BaseUrl": "https://api.mailgun.net/v3",
"DefaultFromAddress": "noreply@mg.yourdomain.com",
"DefaultFromName": "Endatix Notifications"
}
}
}
}
}
Properties
ApiKey(Required): Your private Mailgun API key.Domain(Required): The sending domain verified in your Mailgun account.BaseUrl: The Mailgun API base URL. Usehttps://api.eu.mailgun.net/v3if your domain is hosted in the EU region.DefaultFromAddress(Required): The default sender email address.DefaultFromName: The display name for the sender.
For implementation details, refer to MailgunSettings.cs.
SMTP
If you prefer to use a standard SMTP server (such as Amazon SES, Postmark, or a custom corporate mail server), Endatix provides an SmtpEmailSender implementation using MailKit, the open-source .NET SMTP/MIME library. This supports both STARTTLS (the traditional port 587 setup) and implicit TLS/SMTPS (typically port 465).
Not to be confused with mailkit.com, an unrelated email service provider — this is about the MailKit library, used here purely as the transport for your own SMTP server.
Configuration Example
{
"Endatix": {
"Integrations": {
"Email": {
"SmtpSettings": {
"Host": "smtp.example.com",
"Port": 587,
"EnableSsl": true,
"Username": "your_smtp_username",
"Password": "your_smtp_password",
"DefaultFromAddress": "noreply@yourdomain.com",
"DefaultFromName": "Endatix Notifications"
}
}
}
}
}
Properties
Host(Required): The SMTP server host name or IP address (e.g.,localhostorsmtp.mail.company.com).Port: The SMTP server port number. Defaults to587.EnableSsl: Whether to enable transport security. Combined withPortto pick aSecurityModeautomatically whenSecurityModeis left at its default — see below. Defaults totrue.SecurityMode: Explicitly controls how the connection is secured, overriding theEnableSsl/Portheuristic. One ofAuto(default),None,StartTls,StartTlsWhenAvailable, orSslOnConnect. UseSslOnConnectfor implicit TLS/SMTPS servers (typically port465) if auto-detection based on port doesn't fit your setup.CheckCertificateRevocation: Whether to check the server's TLS certificate for revocation (OCSP/CRL) during the handshake. Defaults tofalse, since some networks block the endpoints this check needs, which would otherwise cause connections to fail. Set totruefor stricter certificate validation if your network allows it.Username: The username for SMTP authentication. If left empty, the connection is made without authentication (a warning is logged).Password: The password for SMTP authentication.DefaultFromAddress(Required): The default sender email address. Defaults tonoreply@endatix.com.DefaultFromName: The default sender display name. Defaults toEndatix.
For implementation details, refer to SmtpSettings.cs.
:::warning Upgrading from the .NET SmtpClient-based sender
Earlier Endatix versions sent SMTP mail using .NET's built-in System.Net.Mail.SmtpClient, which Microsoft's own docs no longer recommend for new development. The MailKit-based sender is a drop-in replacement — no configuration changes are required for the common case of a Host/Port combination with username/password authentication over STARTTLS. Two behaviors changed:
- Blank
Usernameon Windows. Previously, leavingUsernameempty madeSmtpClientauthenticate using the Windows process identity (UseDefaultCredentials). MailKit has no equivalent, so a blankUsernamenow always means an unauthenticated connection. This only matters if you relied on integrated Windows authentication with no explicit username — outside of that, an emptyUsernamebehaves the same as before. - Certificate revocation checking. Not checked previously; still not checked by default now (
CheckCertificateRevocationdefaults tofalse), but it's newly available as an opt-in for stricter validation. :::
For an overview of email providers and how to activate them in Endatix API see the Email Providers Guide.
How to change the sender today
Set Endatix:EmailTemplates:*:FromAddress and restart the API. That is the supported way to change the sender without a database change. Hub list and send both use the same effective address.
{
"Endatix": {
"Hub": {
"HubBaseUrl": "https://hub.example.com"
},
"EmailTemplates": {
"EmailVerification": {
"TemplateId": "email-verification",
"FromAddress": "noreply@yourdomain.com"
},
"UserInvitation": {
"TemplateId": "user-invitation",
"FromAddress": "noreply@yourdomain.com"
},
"ForgotPasswordEmail": {
"TemplateId": "forgot-password",
"FromAddress": "noreply@yourdomain.com"
},
"PasswordChangedEmail": {
"TemplateId": "password-changed",
"FromAddress": "noreply@yourdomain.com"
}
}
}
}
HubBaseUrl is used to build Hub links inside emails (verify-email, activate-invite, reset-password). That is an API setting — see API Hub URL.
Template map
| Config key | Template name in Hub | Used for |
|---|---|---|
EmailVerification | email-verification | Confirm an email address (self-service registration / create-account) |
UserInvitation | user-invitation | Admin invite — recipient sets a password on Activate invite |
ForgotPasswordEmail | forgot-password | Password reset |
PasswordChangedEmail | password-changed | Password changed notice |
Each entry has:
| Property | Description |
|---|---|
TemplateId | Database template name (SMTP/Mailgun) or a provider template id (for example a SendGrid template id) |
FromAddress | Optional. When set, list and send use this address instead of the database row. Leave empty (or omit) to keep the seeded DB sender. |
Sender address resolution
When Endatix sends or lists a template, the from-address is:
FromAddressfromEndatix:EmailTemplatesfor that template, if it is not empty (customer override, no DB edit)- The address stored on the database template (seed today; Hub UI later)
noreply@endatix.comonly if both are empty
The Hub Email Settings page shows the same resolved address that send uses.
A future Hub UI will let admins edit from-address (and HTML) per tenant via the API. When that ships, this config overlay goes away. Until then, keep using Endatix:EmailTemplates:*:FromAddress.
The shipped admin-invite email is UserInvitation. The seeded template name remains user-invitation (that is the name Hub lists). A custom TemplateId (for example a SendGrid id) is left unchanged.
EmailVerification and UserInvitation are independent. Self-service registration and admin invite stay on separate templates so they can diverge later without a breaking rename.
Related
- Email Providers — activate Mailgun, SendGrid, or SMTP in
Program.cs - Email Settings — Hub UI: provider status, templates, test send
- API Hub URL —
HubBaseUrlfor links in mail - Hub environment variables — Hub
.env(not email credentials)