Shiny.Extensions.Mail
1.1.0.59-preview
Prefix Reserved
See the version list below for details.
dotnet add package Shiny.Extensions.Mail --version 1.1.0.59-preview
NuGet\Install-Package Shiny.Extensions.Mail -Version 1.1.0.59-preview
<PackageReference Include="Shiny.Extensions.Mail" Version="1.1.0.59-preview" />
paket add Shiny.Extensions.Mail --version 1.1.0.59-preview
#r "nuget: Shiny.Extensions.Mail, 1.1.0.59-preview"
// Install Shiny.Extensions.Mail as a Cake Addin #addin nuget:?package=Shiny.Extensions.Mail&version=1.1.0.59-preview&prerelease // Install Shiny.Extensions.Mail as a Cake Tool #tool nuget:?package=Shiny.Extensions.Mail&version=1.1.0.59-preview&prerelease
SHINY SERVICE EXTENSIONS FOR .NET
<img src="https://github.com/shinyorg/shiny/raw/master/art/logo.png" width="100" />
FEATURES
- Push Notification Management without a 3rd Party (think Azure Notification Hubs for your on-prem servers)
- Mail Templating On Steroids! Loaders, parsers, converters, & senders!
- Localization done right
- Looks like Microsoft.Extensions.Configuration
- Loads from a database, resx files, and more out of the box
- Allows you to serialize to JSON easily for your frontend
- Existing strongly typed classes generated for RESX, no worries - we have solutions for that too!
- Want to use in your XAML, yup - we got that covered properly too
LINKS
SUPPORT SHINY
While Shiny is free and will continue to be so, maintenance and support takes a heavy toll on sustainability. If you or your company have the resources, please consider becoming a GitHub Sponsor. GitHub Sponsorships help to make Open Source Development more sustainable.
Depending on your Sponsorship Tier, you may also get access to some great benefits on Sponsor Connect (https://sponsorconnect.dev) including:
- The Sponsor Only Discord server
- Training available ONLY to sponsors on Sponsor Connect
- Special sponsor-only packages
How about some Shiny Gear
BUILDS
Branch | Status |
---|---|
Master | |
Dev | |
Preview |
NUGETS
Name | Stable | Preview |
---|---|---|
Shiny.Extensions.Push | ||
Shiny.Extensions.Push.Ef | ||
Shiny.Extensions.Mail | ||
Shiny.Extensions.Localization | ||
Shiny.Extensions.Localization.SqlServer | ||
Shiny.Storage |
SQL Scripts
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MailTemplates](
[MailTemplateId] [uniqueidentifier] NOT NULL,
[TemplateName] [nvarchar](255) NOT NULL,
[CultureCode] [varchar](5) NULL,
[Content] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_MailTemplates] PRIMARY KEY CLUSTERED
(
[MailTemplateId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_MailTemplates] UNIQUE NONCLUSTERED
(
[TemplateName] ASC,
[CultureCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Localization
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Localizations](
[LocalizationId] [uniqueidentifier] NOT NULL,
[Section] [varchar](50) NOT NULL,
[ResourceKey] [varchar](50) NOT NULL,
[CultureCode] [varchar](5) NULL,
[Value] [nvarchar](4000) NOT NULL,
CONSTRAINT [PK_Localizations] PRIMARY KEY CLUSTERED
(
[LocalizationId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_Localizations] UNIQUE NONCLUSTERED
(
[Section] ASC,
[ResourceKey] ASC,
[CultureCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
Push
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PushRegistrations](
[PushRegistrationId] [uniqueidentifier] NOT NULL,
[Platform] [int] NOT NULL,
[DeviceToken] [varchar](512) NOT NULL,
[UserId] [varchar](50) NULL,
[DateUpdated] [datetimeoffset](7) NOT NULL,
[DateCreated] [datetimeoffset](7) NOT NULL,
CONSTRAINT [PK_PushRegistrations] PRIMARY KEY CLUSTERED
(
[PushRegistrationId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_PushRegistrations] UNIQUE NONCLUSTERED
(
[DeviceToken] ASC,
[Platform] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[PushTags] Script Date: 12/16/2021 3:27:13 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PushTags](
[PushTagId] [uniqueidentifier] NOT NULL,
[PushRegistrationId] [uniqueidentifier] NOT NULL,
[Value] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_PushTags] PRIMARY KEY CLUSTERED
(
[PushTagId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_PushTags] UNIQUE NONCLUSTERED
(
[PushRegistrationId] ASC,
[Value] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PushTags] WITH CHECK ADD CONSTRAINT [FK_PushTags_PushRegistrations] FOREIGN KEY([PushRegistrationId])
REFERENCES [dbo].[PushRegistrations] ([PushRegistrationId])
GO
ALTER TABLE [dbo].[PushTags] CHECK CONSTRAINT [FK_PushTags_PushRegistrations]
GO
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- Microsoft.Data.SqlClient (>= 4.0.0)
- Microsoft.Extensions.Caching.Memory (>= 6.0.0)
- RazorEngine.NetCore (>= 3.1.0)
- SendGrid (>= 9.25.1)
- Shiny.Extensions.Mail.Abstractions (>= 1.1.0.59-preview)
- System.Resources.ResourceManager (>= 4.3.0)
-
net5.0
- Microsoft.Data.SqlClient (>= 4.0.0)
- Microsoft.Extensions.Caching.Memory (>= 6.0.0)
- RazorEngine.NetCore (>= 3.1.0)
- SendGrid (>= 9.25.1)
- Shiny.Extensions.Mail.Abstractions (>= 1.1.0.59-preview)
- System.Resources.ResourceManager (>= 4.3.0)
-
net6.0
- Microsoft.Data.SqlClient (>= 4.0.0)
- Microsoft.Extensions.Caching.Memory (>= 6.0.0)
- RazorEngine.NetCore (>= 3.1.0)
- SendGrid (>= 9.25.1)
- Shiny.Extensions.Mail.Abstractions (>= 1.1.0.59-preview)
- System.Resources.ResourceManager (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.