TildeMail.Core
0.2.0
See the version list below for details.
dotnet add package TildeMail.Core --version 0.2.0
NuGet\Install-Package TildeMail.Core -Version 0.2.0
<PackageReference Include="TildeMail.Core" Version="0.2.0" />
<PackageVersion Include="TildeMail.Core" Version="0.2.0" />
<PackageReference Include="TildeMail.Core" />
paket add TildeMail.Core --version 0.2.0
#r "nuget: TildeMail.Core, 0.2.0"
#:package TildeMail.Core@0.2.0
#addin nuget:?package=TildeMail.Core&version=0.2.0
#tool nuget:?package=TildeMail.Core&version=0.2.0
TildeMail.Core
The UI-independent services behind TildeMail. Use this library to compose a host that needs configuration, background jobs, commands, events or native DLL plugins; add TildeMail.Mail for mail access.
Responsibilities
- Configuration, secrets expansion, localization, themes, search queries and persisted application state.
- Command/input services, the event hub, job scheduler, service lifecycle and DLL plugin loading.
- Public helpers that clean text coming from outside before it is shown or parsed (
DisplayTextExtensions,ControlCharacters). - The mail runtime (backends, MIME reading, composition, GPG, cache, rules and new-mail watching) is in TildeMail.Mail, which builds on Core.
Core targets .NET 10 and references TildeMail.Abstractions. Its runtime packages include DryIoc, MimeKit (it validates the addresses of the configuration), Moongate.Core and Serilog. A secret written as #{command} in the configuration runs an external program; hosts supply that tool and the required configuration.
Core contains no terminal or Avalonia renderer and does not depend on Lua, TildeMail.Scripting or TildeMail.Mail. The application composes Core with the desired UI and optional scripting support. Native plugins that only register commands or implement shared contracts can reference Abstractions alone.
Example: a job scheduler with an explicit lifecycle
using DryIoc;
using TildeMail.Abstractions.Interfaces.Hosting;
using TildeMail.Core.Data.Config;
using TildeMail.Core.Extensions.Hosting;
using TildeMail.Core.Extensions.Jobs;
using var container = new Container();
container.RegisterHosting();
container.RegisterJobs(new JobsConfig());
var lifecycle = container.Resolve<IServiceLifecycle>();
await lifecycle.StartAsync(CancellationToken.None);
try
{
// Run the host's work here. Services start only through the lifecycle.
}
finally
{
await lifecycle.StopAsync(CancellationToken.None);
}
Each domain has its own registration extensions and dependencies; registering jobs does not configure a complete mail application. RegisterJobs registers only the scheduler. Hosts using Lua also call RegisterJobScripting from TildeMail.Scripting to expose jobs and top_status.
For DLL plugins, initialize the host registries before loading bundles and load plugins before resolving application services. Stop the lifecycle, dispose the container, then dispose PluginLoader. The development guide describes composition, and the plugin guide covers loading and shared assemblies.
Build and package
Run from the repository root with the .NET 10 SDK:
dotnet build src/TildeMail.Core -c Release
dotnet pack TildeMail.slnx -c Release -o artifacts/nuget
Packing the solution produces the four library packages together. Core declares a NuGet dependency on Abstractions; it does not embed that sibling assembly. The package includes its assembly, XML API documentation and this README, with portable symbols in a matching .snupkg. Version, authors and license metadata come from Directory.Build.props.
The NuGet development instructions explain local installation. Generating packages does not publish them to a registry.
License
GPL-3.0-or-later. See the license and third-party notices for dependency licenses.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- DryIoc.dll (>= 5.4.3)
- MimeKit (>= 4.18.2)
- Moongate.Core (>= 0.20.1)
- Serilog (>= 4.4.0)
- TildeMail.Abstractions (>= 0.2.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on TildeMail.Core:
| Package | Downloads |
|---|---|
|
TildeMail.Scripting
Lua scripting engine, sandbox and modules for TildeMail commands, keybindings, mail events and jobs. |
|
|
TildeMail.Mail
Mail runtime for TildeMail: IMAP and Maildir backends, SMTP delivery, MIME reading, message composition, GPG, the mail cache, rules and new-mail watching. |
GitHub repositories
This package is not used by any popular GitHub repositories.