Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
hsndmr committed Jul 7, 2024
1 parent 8ed227c commit 2d81cf8
Showing 1 changed file with 96 additions and 87 deletions.
183 changes: 96 additions & 87 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
A .NET package that generates clean, responsive HTML e-mails for sending transactional mail. This package is inspired by <a href="https://github.com/eladnava/mailgen">https://github.com/eladnava/mailgen</a>
A .NET package that generates clean, responsive HTML e-mails for sending transactional mail. This package is inspired
by <a href="https://github.com/eladnava/mailgen">https://github.com/eladnava/mailgen</a>

## Demo
<img src="https://raw.github.com/hsndmr/mailgen/main/screenshots/default/reset.png" height="400" /> <img src="https://raw.github.com/hsndmr/mailgen/main/screenshots/default/receipt.png" height="400" />

![Reset](https://raw.github.com/hsndmr/mailgen/main/screenshots/default/reset.png)
> These e-mails were generated using the built-in `default` theme.

## Usage

First, install the package using NuGet:
Expand All @@ -15,106 +16,114 @@ dotnet add package Mailgen

Then, use the following code to generate an e-mail:

Create an item class that will be used in the table.

```csharp
using Mailgen;
using Mailgen.Dtos;
using Mailgen.Templates.Models;
public class Item
{
public required string Name { get; set; }
public required string Description { get; set; }
public required string Price { get; set; }
}
```

var createMailGeneratorDto = new CreateMailGeneratorDto
```csharp
var product = new ProductModel
{
Options = new TemplateOptionsModel
{
Product = new ProductModel
{
CopyrightLeft = "© 2024",
CopyrightRight = "All rights reserved.",
Link = "https://github.com/hsndmr",
Name = "Example Product"
}
}
CopyrightLeft = "© 2024",
CopyrightRight = "All rights reserved.",
Link = "https://github.com/hsndmr",
Name = "Example Product"
};


var mailGenerator = new MailGenerator(new HtmlGeneratorFactory(), createMailGeneratorDto);
var generateMailDto = new GenerateMailDto<Item>
var mailGenerator = new MailGenerator(product, new DefaultTemplate());
var body = new BodyModel<Item>
{
Body = new TemplateBodyModel<Item>
Title = "Hi John Appleseed,",
Intros =
[
"Your order has been processed successfully."
],
Tables = new List<TableModel<Item>>
{
Title = "Hi John Appleseed,",
Intros =
[
"Your order has been processed successfully."
],
Tables = new List<TableModel<Item>>
new()
{
new()
{
Columns =
[
new TableColumnModel<Item>
{
Header = "Item",
ValueSelector = item => item.Name,
Width = "20%"
},
new TableColumnModel<Item>
{
Header = "Description",
ValueSelector = item => item.Description
},
new TableColumnModel<Item>
{
Header = "Price",
ValueSelector = item => item.Price,
Width = "15%",
Align = "right"
}
],
Rows =
[
new Item
{
Name = "Node.js",
Description = "Event-driven I/O server-side JavaScript environment based on V8.",
Price = "$10.99"
},
new Item
{
Name = "Mailgen",
Description = "A .NET library for generating HTML emails.",
Price = "$1.99"
}
]
}
},
Actions =
[
new ActionModel
{
Instructions = "You can check the status of your order and more in your dashboard:",
Button = new ButtonModel
Columns =
[
new TableColumnModel<Item>
{
Header = "Item",
ValueSelector = item => item.Name,
Width = "20%"
},
new TableColumnModel<Item>
{
Color = "#22BC66",
Text = "Go to Dashboard",
Link = "https://github.com/hsndmr"
Header = "Description",
ValueSelector = item => item.Description
},
new TableColumnModel<Item>
{
Header = "Price",
ValueSelector = item => item.Price,
Width = "15%",
Align = "right"
}
],
Rows =
[
new Item
{
Name = "Node.js",
Description = "Event-driven I/O server-side JavaScript environment based on V8.",
Price = "$10.99"
},
new Item
{
Name = "Mailgen",
Description = "A .NET library for generating HTML emails.",
Price = "$1.99"
}
]
}
},
Actions =
[
new ActionModel
{
Instructions = "You can check the status of your order and more in your dashboard:",
Button = new ButtonModel
{
Color = "#22BC66",
Text = "Go to Dashboard",
Link = "https://github.com/hsndmr"
}
],
Outro =
[
"We thank you for your purchase."
],
Signature = "Yours truly"
}
}
],
Outro =
[
"We thank you for your purchase."
],
Signature = "Yours truly"
};

var html = await mailGenerator.GenerateMail(generateMailDto);

var html = await mailGenerator.GenerateMail(body);
Console.WriteLine(html);
```

This code would output the following HTML template:

<img src="https://raw.github.com/hsndmr/mailgen/main/screenshots/default/receipt.png" height="400" />
![Receipt](https://raw.github.com/hsndmr/mailgen/main/screenshots/default/receipt.png)

## Example

* [Example](Example/Program.cs)

## RTL Support

To change the default text direction (left-to-right), simply override it as follows:

```csharp
var body = new BodyModel<Item>
{
TextDirection = "rtl"
};
```

0 comments on commit 2d81cf8

Please sign in to comment.