correo/README.md

85 lines
2.9 KiB
Markdown
Raw Normal View History

2023-01-17 23:49:05 +02:00
# Correo
2023-01-21 00:36:22 +02:00
Correo is a .NET service for programmatically sending emails. Communication with this service is available through two channels simultaneously:
2023-01-21 00:34:53 +02:00
* HTTP (via REST API)
2023-01-21 00:37:24 +02:00
* Pub/Sub Messaging (via NATS)
2023-01-17 23:49:05 +02:00
2023-01-21 00:34:53 +02:00
It can be integrated with several types of mediators, the configuration being the following:
2023-01-21 04:35:27 +02:00
```"SmtpMediator": "SmtpClient", //SmtpClient, SendGrid, Mailgun```
2023-01-21 00:34:53 +02:00
## Mediators
### SMTP servers:
* Local servers
2023-01-17 23:49:05 +02:00
* Gmail
* Yahoo
2023-01-21 00:34:53 +02:00
The integration with SMTP servers can be done through two libraries (.NET / MailKit), and the configuration area looks like this:
```
"SmtpClient": {
2023-01-21 04:35:27 +02:00
"Package": "MailKit", //.NET, MailKit
2023-01-21 00:34:53 +02:00
"Server": "smtp.gmail.com",
"Port": "587",
"UseAuthentication": true,
"Authentication": {
"UserName": "<account>@gmail.com",
"Domain": "",
"Password": "********"
},
"EnableSsl": true,
"TrustServer": false
}
```
### Transactional Email APIs:
#### SendGrid
SendGrid is a cloud-based SMTP provider that allows you to send emails without having to maintain email servers. It has an excellent and easy-to-use email API with a free plan that allows you to send 100 emails per day.
For this integration, the setup is very simple. All you need is an API Key generated from the [SendGrid](https://app.sendgrid.com/) platform. Afterwards, this API Key will be configured in Correo as below:
```
"SmtpMediator": "SendGrid"
2023-01-21 04:35:27 +02:00
"SendGrid": {
2023-01-21 00:34:53 +02:00
"ApiKey": "xxxxxxxxxxx"
}
```
2023-01-21 04:35:27 +02:00
#### Mailgun
Mailgun is an email automation service that allows you to send, receive, and track emails. It offers a free usage plan as well as a pay-as-you-go pricing model that is based on the number of emails sent per month.
For this integration, the setup is very simple. All you need is an API Key generated from the [Mailgun](https://app.mailgun.com/) platform and the domain name configured in Mailgun. Afterwards, this keys will be configured in Correo as below:
```
"SmtpMediator": "Mailgun"
"Mailgun": {
"ApiKey": "xxxxxxxxxxx",
"Domain": "xxxxxxxxxxx"
}
```
2023-01-26 21:42:18 +02:00
## Logging
The logging functionality is managed with Serilog, and its configuration is done in the ```appsettings.json``` file. In addition to its standard configuration, Correo also has a preconfigured area where three destinations for logs are available: file, Postgres database and Seq. Each of the destinations can be activated or not. If logging in the console is sufficient, all additional logging destinations can be disabled.
This configuration area is:
2023-01-21 00:34:53 +02:00
```
2023-01-26 21:42:18 +02:00
"Logs": {
"File": {
"Enabled": false,
"Path": "logs/log.txt"
},
"Postgres": {
"Enabled": false,
"Connection": "Host=<host>;Port=5432;User ID=<user>;Password=<password>;Database=<database>;"
},
"Seq": {
"Enabled": false,
"Url": "",
"ApiKey": ""
}
2023-01-21 00:34:53 +02:00
}
```
2023-01-21 00:45:20 +02:00
For the moment, the only purpose of the database is to store the logs generated by Serilog.
## Hosting
The only hosting environment tested for this service is Docker, but considering that .NET 6 is cross platform, it can most likely be hosted in any environment.