added readme

This commit is contained in:
Mathias Beaulieu-Duncan 2025-07-14 22:13:57 -04:00
parent 261042f920
commit 5119b1aa0e
Signed by: mathias
GPG Key ID: 1C16CF05BAF9162D
2 changed files with 106 additions and 1 deletions

View File

@ -29,7 +29,7 @@ public class TransactionalEmailTests(TestFixture fixture, ITestOutputHelper outp
Assert.NotNull(testRecipient); Assert.NotNull(testRecipient);
Assert.NotNull(senderId); Assert.NotNull(senderId);
await transactionalEmailService.SendEmailAsync(new SendEmailOptions() await transactionalEmailService.SendEmailAsync(new SendEmailOptions
{ {
Email = testRecipient, Email = testRecipient,
Sender = new Sender Sender = new Sender

105
readme.md Normal file
View File

@ -0,0 +1,105 @@
## Cakemail SDK for .NET
This SDK provides a convenient way to interact with the Cakemail API from your .NET applications.
### Installation
You can install the Cakemail SDK via NuGet Package Manager:
```bash
Install-Package Cakemail.SDK
```
### Configuration
The SDK relies on configuration settings typically found in your `appsettings.json` file. Here's an example of the required `Cakemail` section:
```json
"Cakemail": {
"Authentication": {
"TokenEndpoint": "YOUR_CAKEMAIL_TOKEN_ENDPOINT",
"Username": "YOUR_CAKEMAIL_USERNAME",
"Password": "YOUR_CAKEMAIL_PASSWORD",
"Cache": {
"ExpirationOffset": 15,
"CacheKey": "CakemailJwtTokenManager.JwtTokenResult"
}
}
}
```
**Important:** Replace `"YOUR_CAKEMAIL_TOKEN_ENDPOINT"`, `"YOUR_CAKEMAIL_USERNAME"`, and `"YOUR_CAKEMAIL_PASSWORD"` with your actual Cakemail API credentials.
### Service Configuration
To integrate the Cakemail SDK into your .NET application's dependency injection container, you'll need to configure the services in your `Startup.cs` or `Program.cs` file.
```csharp
services.AddMemoryCache(); // Add to reuse the same Jwt token until it expires
services.AddHttpClient(); // Required for making HTTP requests
services.AddCakemailSdk(); // Adds Cakemail SDK services
```
* `services.AddMemoryCache()`: This is highly recommended to cache the JWT token obtained from Cakemail, preventing repeated authentication requests and improving performance.
* `services.AddHttpClient()`: This registers the necessary `HttpClient` services for the SDK to make API calls.
* `services.AddCakemailSdk()`: This extension method registers all the necessary Cakemail SDK services, including various API clients, with your dependency injection container.
### Usage
The Cakemail SDK provides various services for interacting with different aspects of the Cakemail API. Here's an example of how to use the `TransactionalEmailService` to send an email:
```csharp
public class MyService
{
private readonly TransactionalEmailService _transactionalEmailService;
public MyService(TransactionalEmailService transactionalEmailService)
{
_transactionalEmailService = transactionalEmailService;
}
public async Task SendEmailAsync(string senderId, string recipient, string subject, string message)
{
await _transactionalEmailService.SendEmailAsync(new SendEmailOptions
{
Email = recipient,
Sender = new Sender
{
Id = senderId
},
Content = new EmailContent
{
Subject = subject,
Text = message,
Encoding = EmailEncoding.Utf8,
},
Tracking = new TrackingOptions
{
ClicksHtml = false, // Set to true to track clicks on HTML links
ClicksText = false, // Set to true to track clicks on text links
Opens = true // Set to true to track email opens
},
Queue = 0 // Optional: The queue ID to use for sending the email
});
}
}
```
In this example:
1. The `MyService` class injects the `TransactionalEmailService`.
2. The `SendEmailAsync` method demonstrates how to construct a `SendEmailOptions` object with the recipient, sender, email content (subject, text, encoding), and tracking options.
3. `EmailEncoding.Utf8` is a common encoding for email content.
4. `TrackingOptions` allow you to control whether email opens and clicks are tracked.
### Available Services
The Cakemail SDK provides dedicated services for different API functionalities. You can inject these services into your classes as needed:
* `TransactionalEmailService`: For sending transactional emails.
### Resources
* [Cakemail](https://www.cakemail.com/index.html)
* [Cakemail API Documentation](https://cakemail.dev/api)
### License MIT