Sidio.MailBluster
1.2.0
Prefix Reserved
dotnet add package Sidio.MailBluster --version 1.2.0
NuGet\Install-Package Sidio.MailBluster -Version 1.2.0
<PackageReference Include="Sidio.MailBluster" Version="1.2.0" />
paket add Sidio.MailBluster --version 1.2.0
#r "nuget: Sidio.MailBluster, 1.2.0"
// Install Sidio.MailBluster as a Cake Addin #addin nuget:?package=Sidio.MailBluster&version=1.2.0 // Install Sidio.MailBluster as a Cake Tool #tool nuget:?package=Sidio.MailBluster&version=1.2.0
Sidio.MailBluster
Sidio.MailBluster is an unofficial C# SDK for the MailBluster API. This package is not yet fully feature complete, see the feature status below. If you encounter any issues or have recommendations, feel free to create an issue or a pull request.
⚠️ On the debug log level, sensitive data will be logged. It is highly recommended to disable the debug log level on production systems and/or configure redaction. See the logging and compliance section of this readme.
Installation
Add the package to your project.
Usage
Options
{
"MailBluster:Url": "https://api.mailbluster.com/api/",
"MailBluster:ApiKey": "your-api-key"
}
Dependency injection
services.AddMailBluster();
Using the client
public class MyClass
{
private readonly IMailBlusterClient _client;
public MyClass(IMailBlusterClient client)
{
_client = client;
}
public async Task GetLeads()
{
var lead = await _client.GetLeadAsync("noreply@sidio.nl");
}
}
Logging and compliance
The MailBluster client writes logs on the Debug
level. The logs contain the request and response data. Sensitive information,
such as names, ip addresses and email addresses, are redacted using the Microsoft.Extensions.Compliance.Redaction
framework. To use the
default implementation, use:
builder.Services.AddRedaction(
rb =>
{
rb.AddMailBlusterCompliance();
});
Currently, there are three types of classifications, which will be redacted as follows:
- Personally identifiable information: values will be replaced with asterisks except for the first character (classification
MailBlusterDataTaxonomy.PersonallyIdentifiableInformation
)- Email address: will be redacted from for example
noreply@sidio.nl
ton******@*****.**
(classificationMailBlusterDataTaxonomy.EmailAddressInformation
)
- Email address: will be redacted from for example
- Sensitive information: values will be replaced with asterisks except for the first character (classification
MailBlusterDataTaxonomy.SensitiveInformation
)
A fully configured example with JSON logging:
// install packages:
// - Microsoft.Extensions.Telemetry
// - Microsoft.Extensions.Compliance.Redaction
builder.Services.AddLogging(
x =>
{
x.EnableRedaction();
// json logging enables logging of the request and response data
x.ClearProviders();
x.AddJsonConsole(option => option.JsonWriterOptions = new JsonWriterOptions
{
Indented = true
});
x.Services.AddRedaction(
rb =>
{
rb.AddMailBlusterCompliance();
});
});
Feature status
- Manage leads
- Create
- Read
- Update
- Delete
- Manage fields
- Create
- Read
- Update
- Delete
- Manage products
- Create
- Read
- Update
- Delete
- Manage orders
- Create
- Read
- Update
- Delete
Integration tests
Integration tests are available in the Sidio.MailBluster.Integration.Tests
project. To run the tests,
add the following configuration file local.settings.json
:
{
"MAILBLUSTER_API_KEY": "your-api-key"
}
Note:
- The integration tests will create, update and delete data in your MailBluster brand associated with the API key.
- In order to run the tests for Fields, a pro account is required.
API Documentation
Troubleshooting
Sensitive data is not redacted in the logs
Install these packages in your solution:
Microsoft.Extensions.Telemetry
Microsoft.Extensions.Compliance.Redaction
Ensure that the Redaction framework is configured correctly.
Disclaimer
This package is not affiliated with MailBluster. Although we try to cover the API as much as possible using unit- and integration testing, we cannot guarantee that all features or error states have been implemented. Please use at your own risk.
Sponsors
Many thanks to MailBluster for providing us with a pro account.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. net9.0 is compatible. |
-
net8.0
- Flurl.Http (>= 4.0.2)
- Microsoft.Extensions.Compliance.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.0)
- Microsoft.Extensions.Telemetry.Abstractions (>= 9.0.0)
-
net9.0
- Flurl.Http (>= 4.0.2)
- Microsoft.Extensions.Compliance.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.0)
- Microsoft.Extensions.Telemetry.Abstractions (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.