net3000.mailingList 1.0.0

dotnet add package net3000.mailingList --version 1.0.0
                    
NuGet\Install-Package net3000.mailingList -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="net3000.mailingList" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="net3000.mailingList" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="net3000.mailingList" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add net3000.mailingList --version 1.0.0
                    
#r "nuget: net3000.mailingList, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package net3000.mailingList@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=net3000.mailingList&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=net3000.mailingList&version=1.0.0
                    
Install as a Cake Tool

mailingListCore

Overview

The mailingListCore library provides comprehensive mailing list management for the Net3000 platform. It handles subscriber management, campaign creation and delivery, multi-platform email marketing integrations (SendGrid, MailChimp, Constant Contact), delivery tracking, and unsubscribe management. Campaigns can be sent immediately or queued for background processing.

Features

  • Subscriber Management: Subscribe, unsubscribe, search, and import subscribers with custom metadata fields
  • Campaign Delivery: Create, schedule, and send email campaigns with immediate or background execution
  • Multi-Platform Integration: SendGrid, MailChimp, Constant Contact, and Amadeus platform support with list/contact synchronization
  • Delivery Tracking: Email open tracking via pixels, click tracking, bounce detection, and per-subscriber status logging
  • Unsubscribe Management: Token-based unsubscribe links with cross-platform unsubscribe handling
  • SendGrid Webhooks: Process delivery events (bounces, opens, clicks, unsubscribes) from SendGrid webhook callbacks
  • Dynamic Message Groups: Query-based recipient lists from external data sources

Database Tables

ml_maillists

Mailing lists with account scoping:

  • title, listCode, uuid (GUID), account
  • responseTitle, responseMessage (subscription confirmation)
  • notifyemail, details

ml_subscribers

Subscriber records:

  • email, firstName, lastName, account
  • metaData (JSON custom fields), bounced, exclude

ml_listsubscribers

Subscription relationships linking subscribers to lists:

  • listID, subscriberID, unsubscribed, Token (GUID for unsubscribe links)

ml_messages

Email message templates:

  • messageCode, title, subject, message (HTML body)
  • fromName, fromMail, replyEmail, useTemplate

ml_dlog

Campaign delivery logs:

  • messageID, listID, account, statusID, Token (GUID)
  • Delivery stats: sentNumber, delivered_count, bounces, opens, clicks, unsubscribes

ml_subscriberlog

Individual subscriber delivery tracking:

  • logID, subscriberID, opened, unsubscribed, token

ml_listConnections

External platform connections per list:

  • listID, apiPlatformID, metaData (JSON)

ml_subscriberConnections

External platform subscriber links:

  • subscriberId, platformId, externalId

ml_netareaLog

Campaign logs with filter criteria for targeted sends:

  • messageID, sentTo, clientStatus, accountStatus, appCodes

Public API

<details> <summary>net3000.mailingList.lib - Subscription Management</summary>

Member Summary Parameters
string subscribe(subscriber mySubscriber) Subscribes a new or existing subscriber to a list; creates list if using listCode. mySubscriber (subscriber)
Task<apiResponse> SubscribeAsync(Dictionary<string, string> mySubscriber, ml_maillists list) Async subscription using dictionary data with platform sync (MailChimp, Constant Contact, SendGrid). mySubscriber (Dictionary), list (ml_maillists)
Task<apiResponse> SubscribeAsync(subscribeModel mySubscriber, ml_maillists list) Async subscription using subscribeModel with platform synchronization. mySubscriber (subscribeModel), list (ml_maillists)
Task<UnsubscribeEmailListApiResult> UnsubscribeByEmailAndListUuidAsync(string email, Guid listUuid) Unsubscribes by email and list UUID; removes platform connections. email (string), listUuid (Guid)
List<ml_subscribers> searchMembers(string search) Searches subscribers by email, firstName, or lastName within current account. search (string)
List<ml_listsubscribers> membersList(int listID) Retrieves all list subscriber relationships for a list. listID (int)

</details>

<details> <summary>net3000.mailingList.lib - Campaign Sending</summary>

Member Summary Parameters
Task<apiResponse> SendCampaignAsync(int campaignId) Sends campaign to subscribers synchronously. Background execution is arranged by the caller via Hangfire (see Net3000.Worker.Jobs.ScheduledCampaignDispatchJob). campaignId (int)
Task Send(ml_dlog exLog) Sends campaign to subscribers using their configured platforms. exLog (ml_dlog)
Task<apiResponse> SendMessageAsync(ml_messages message, List<string> emails) Sends direct message to email list via SendGrid API. message (ml_messages), emails (List<string>)
Task<apiResponse> SendToSendGrid(string listId, ml_dlog exLog) Sends campaign to SendGrid list with tracking and personalization. listId (string), exLog (ml_dlog)

</details>

<details> <summary>net3000.mailingList.lib - Tracking & Unsubscribe</summary>

Member Summary Parameters
Task<UnsubscribeByTokenResult> GetUnsubscribeByTokenInfoAsync(Guid campaignToken, Guid subscriberToken) Retrieves unsubscribe confirmation info by campaign and subscriber tokens. campaignToken (Guid), subscriberToken (Guid)
Task<UnsubscribeByTokenResult> UnsubscribeByTokenAsync(Guid campaignToken, Guid subscriberToken) Marks subscriber as unsubscribed using tokens. campaignToken (Guid), subscriberToken (Guid)
UnsubscribeByQueryResult UnsubscribeByQuery(string actualToken, int? id) Unsubscribes by query parameter token and optional subscriber ID. actualToken (string), id (int?)
ml_subscriberlog TrackImage(string token, int? logid) Tracks email opens via tracking pixel; returns subscriber log record. token (string), logid (int?)
Task<MarkBouncedResult> MarkBouncedAsync(Guid listUuid, List<string> emails) Marks emails as bounced for a specific list. listUuid (Guid), emails (List<string>)

</details>

<details> <summary>net3000.mailingList.lib - Platform Sync</summary>

Member Summary Parameters
Task<apiResponse> SyncSendGridListsAsync() Syncs mailing lists from SendGrid API to local database for current account. None
Task<apiResponse> SyncSendGridContactsAsync(string listId, string name) Syncs contacts from a specific SendGrid list to local database. listId (string), name (string)

</details>

<details> <summary>net3000.mailingList.lib - Utility</summary>

Member Summary Parameters
List<string> ExtractEmails(string data) Extracts all email addresses from text using regex. data (string)
List<string> ExtractEmailLists(string data) Extracts unique email addresses from text. data (string)
Task<ml_maillists> FindOrCreateListForDictionarySubscribeAsync(Dictionary<string, string> mySubscriber) Resolves or creates a mailing list for subscription by listID, uuid, or listCode. mySubscriber (Dictionary)

</details>

<details> <summary>Constants & Enums</summary>

Name Type Values
Platforms.ConstantContact string "constantContact"
Platforms.MailChimp string "mailChimp"
Platforms.SendGrid string "sendGrid"
Platforms.Amadeus string "amadeus"
CampaignStatus.Draft int -1
CampaignStatus.Scheduled int 0
CampaignStatus.Delivered int 1
CampaignStatus.Cancelled int 2
CampaignStatus.Failed int 3

</details>

Usage

using net3000.mailingList;

// Initialize
var ml = new lib();
ml.mailingListDb = mailingListDbContext;
ml.account = currentAccountId;

// Subscribe a user
var subscriber = new subscriber
{
    email = "user@example.com",
    name = "Jane Doe",
    account = currentAccountId,
    listCode = "newsletter"
};
ml.subscribe(subscriber);

// Send a campaign
var result = await ml.SendCampaignAsync(campaignId, runInBackground: true, serviceProvider);

// Track unsubscribe
var info = await ml.GetUnsubscribeByTokenInfoAsync(campaignToken, subscriberToken);

Connection String

The library expects a connection string named "mailinglist":

{
  "ConnectionStrings": {
    "mailinglist": "Server=your-server;Database=mailinglist;..."
  }
}

Dependencies

  • SendGrid 9.29.3 - Email delivery
  • Microsoft.EntityFrameworkCore.SqlServer 10.0.1 - Data access
  • Newtonsoft.Json 13.0.4 - JSON serialization
  • Serilog 4.3.0 - Structured logging
  • net3000.common 10.0.7 - Common utilities
  • apiConnectorCore - API connection management
  • ConstantContact.Services / mailChimp.Services / SendGrid.Services - Platform integrations

License

This library is proprietary to Net3000. Redistribution or use outside Net3000.ca solutions is not permitted.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on net3000.mailingList:

Package Downloads
net3000.shoppingCart

E-commerce library for Net3000 storefronts. Product catalog, orders, payment gateways, structured data, and mailing-list audience integration.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 31 7/21/2026

1.0.0 — Initial NuGet release. Library decoupled from netlibCore; namespaces remain net3000.mailingList.*.