Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions MailAgent/Options/MailAgentOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,7 @@ public class MailAgentOptions
public string HeartbeatUrl { get; set; } = string.Empty;

public string O365ClientId { get; set; } = string.Empty;

public bool DisableEmailAgeThreshold { get; set; } = false;
}
}
12 changes: 12 additions & 0 deletions MailAgent/Services/ConfigurationValidator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,18 @@ public List<ConfigurationIssue> ValidateConfiguration()
{
var issues = new List<ConfigurationIssue>();

// Check if email age threshold is disabled
if (_options.DisableEmailAgeThreshold)
{
issues.Add(new ConfigurationIssue
{
Severity = IssueSeverity.Warning,
Category = "EmailAgeThreshold",
Message = "Email age threshold is DISABLED. All unread emails will be processed regardless of age.",
Hint = "This setting is intended for testing purposes only. DO NOT use in production! Set 'DisableEmailAgeThreshold' to false for production use."
});
}

if (!_options.EmailSettings.Any())
{
issues.Add(new ConfigurationIssue
Expand Down
2 changes: 1 addition & 1 deletion MailAgent/Services/MailService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ await client.Connect(
&& !sender.Contains(siteEmailSetting.EMailSenderFilter, StringComparison.InvariantCultureIgnoreCase);

// Message is too old
if ((DateTimeOffset.Now - eMail.message.Date).Duration() > TimeSpan.FromMinutes(15))
if (!_options.DisableEmailAgeThreshold && (DateTimeOffset.Now - eMail.message.Date).Duration() > TimeSpan.FromMinutes(15))
{
_log.LogInformation($"Mail with subject '{eMail.message.Subject}' received delayed. EMail was sent at {eMail.message.Date.ToLocalTime()}. Ignore and mark as read.");

Expand Down
3 changes: 2 additions & 1 deletion MailAgent/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
"EMailMode": "Imap",
"IgnoreCertificateErrors": false,
"HeartbeatInterval": "00:00:10",
"HeartbeatUrl": ""
"HeartbeatUrl": "",
"DisableEmailAgeThreshold": false
}
}
3 changes: 3 additions & 0 deletions MailAgent/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ Für das entwickeln der regulären Ausdrücke sind folgende Seiten/Tools hilfrei
https://regex101.com/ (testen und entwickeln)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Cheatsheet (allgemeine Informationen)

**Tipp zum Testen von regulären Ausdrücken:** Um reguläre Ausdrücke mit älteren E-Mails zu testen, kann die Einstellung `DisableEmailAgeThreshold` auf `true` gesetzt werden. Dadurch werden auch E-Mails verarbeitet, die älter als 15 Minuten sind. Siehe Abschnitt `MailAgentOptions` für weitere Details.

## Konfiguration

### Abschnitt `Serilog`
Expand Down Expand Up @@ -133,6 +135,7 @@ Weitere Einstellungen:
* `HeartbeatInterval` -> Intervall für das Senden von Heartbeats. (z.B. an UptimeRobot)
* `HeartbeatUrl` -> HTTP-GET Endpunkt, der für Heartbeats aufgerufen werden soll
* `O365ClientId` -> Die Client-ID für die O365 OAuth2-Authentifizierung (nur erforderlich bei Verwendung von `O365` Authentifizierung). Der Standardwert ist eine öffentliche Client-ID.
* `DisableEmailAgeThreshold` -> Deaktiviert die 15-Minuten-Altersschwelle für E-Mails. **Nur für Testzwecke!** Standardmäßig werden E-Mails, die älter als 15 Minuten sind, ignoriert und als gelesen markiert. Wenn diese Einstellung auf `true` gesetzt wird, werden alle ungelesenen E-Mails unabhängig vom Alter verarbeitet. Dies ist nützlich zum Testen von regulären Ausdrücken mit älteren E-Mails. **Warnung:** Diese Einstellung sollte in Produktivumgebungen NICHT aktiviert werden! Bei Aktivierung wird beim Start eine deutliche Warnung angezeigt.

## Copyright
Copyright Feuer Software GmbH, Karlsbader Str. 16, Eschborn
Expand Down
Loading