{"id":20904742,"url":"https://github.com/angelodotnet/mailkitcustomextensions","last_synced_at":"2026-01-05T07:37:44.337Z","repository":{"id":142968628,"uuid":"612707160","full_name":"AngeloDotNet/MailKitCustomExtensions","owner":"AngeloDotNet","description":null,"archived":false,"fork":false,"pushed_at":"2023-03-16T22:21:11.000Z","size":22,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T08:55:47.805Z","etag":null,"topics":["custom","extension","hacktoberfest","hacktoberfest-accepted","library","mailkit","net6"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AngeloDotNet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-11T18:32:43.000Z","updated_at":"2024-03-27T18:54:28.000Z","dependencies_parsed_at":"2023-06-03T03:45:53.268Z","dependency_job_id":null,"html_url":"https://github.com/AngeloDotNet/MailKitCustomExtensions","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngeloDotNet%2FMailKitCustomExtensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngeloDotNet%2FMailKitCustomExtensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngeloDotNet%2FMailKitCustomExtensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngeloDotNet%2FMailKitCustomExtensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AngeloDotNet","download_url":"https://codeload.github.com/AngeloDotNet/MailKitCustomExtensions/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245195455,"owners_count":20575888,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom","extension","hacktoberfest","hacktoberfest-accepted","library","mailkit","net6"],"created_at":"2024-11-18T13:18:42.762Z","updated_at":"2026-01-05T07:37:44.295Z","avatar_url":"https://github.com/AngeloDotNet.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MailKit Custom Extensions\n\nIf you like this repository, please drop a :star: on Github!\n\n\n## Installation\n\nThe library is available on [NuGet](https://www.nuget.org/packages/MailKitCustomExtensions) or run the following command in the .NET CLI:\n\n```bash\ndotnet add package MailKitCustomExtensions\n```\n\n\n## Configuration to add to the appsettings.json file\n\n```json\n\"Serilog\": {\n  \"MinimumLevel\": \"Warning\",\n  \"WriteTo\": [\n    {\n      \"Name\": \"Console\",\n      \"Args\": {\n        \"outputTemplate\": \"{Timestamp:HH:mm:ss}\\t{Level:u3}\\t{SourceContext}\\t{Message}{NewLine}{Exception}\"\n      }\n    },\n    {\n      \"Name\": \"File\",\n      \"Args\": {\n        \"path\": \"Logs/log.txt\",\n        \"rollingInterval\": \"Day\",\n        \"retainedFileCountLimit\": 14,\n        \"restrictedToMinimumLevel\": \"Warning\",\n        \"formatter\": \"Serilog.Formatting.Json.JsonFormatter, Serilog\"\n      }\n    }\n  ]\n},\n\"Smtp\": {\n  \"Host\": \"example.org\",\n  \"Port\": 25,\n  \"Security\": \"StartTls\",\n  \"Username\": \"Username SMTP\",\n  \"Password\": \"Password SMTP\",\n  \"Sender\": \"MyName \u003cnoreply@example.org\u003e\"\n}\n```\n\n\n## Registering services at Startup\n\n```csharp\npublic Startup(IConfiguration configuration)\n{\n  Configuration = configuration;\n}\n\npublic IConfiguration Configuration { get; }\n\t\npublic void ConfigureServices(IServiceCollection services)\n{\n  //Includes registration of services.AddSerilogServices() from Nuget package SerilogCustomExtensions\n  services.AddMailKitEmailSenderService(Configuration);\n}\n\n//OMISSIS\n\npublic void Configure(WebApplication app)\n{\n  //Dependency Injection needed by the SerilogCustomExtensions Nuget package\n  app.AddSerilogConfigureServices();\n}\n```\n\n\n## Registering services at Program\n\n```csharp\npublic static void Main(string[] args)\n    {\n        WebApplicationBuilder builder = WebApplication.CreateBuilder(args);\n\n        //Dependency Injection needed by the SerilogCustomExtensions Nuget package\n        builder.AddSerilogOptionsBuilder();\n\n        Startup startup = new(builder.Configuration);\n\n        //OMISSIS\n    }\n```\n\n\n## Example of the InputMailSender class\n```csharp\npublic class InputMailSender\n{\n  public string RecipientEmail { get; set; }\n  public string ReplyToEmail { get; set; }\n  public string Subject { get; set; }\n  public string HtmlMessage { get; set; }\n}\n```\n\n\n## Example of use in a web api controller\n```csharp\n[ApiController]\n[Route(\"api/[controller]\")]\npublic class EmailController : ControllerBase\n{\n  private readonly ILoggerService loggerService;\n  private readonly IEmailClient emailClient;\n\n  public EmailController(ILoggerService loggerService, IEmailClient emailClient)\n  {\n    this.loggerService = loggerService;\n    this.emailClient = emailClient;\n  }\n  \n  [HttpPost(\"InvioEmail\")]\n  public async Task\u003cIActionResult\u003e InvioEmail([FromForm] InputMailSender model)\n  {\n      try\n      {\n        var result = await emailClient.SendEmailAsync(model.RecipientEmail, model.ReplyToEmail, model.Subject, model.HtmlMessage);\n        \n        if (!result)\n        {\n            return BadRequest();\n        }\n\n        return Ok();\n      }\n      catch\n      {\n         var message = \"Errore durante l'invio della mail\";\n         var errori = loggerService.ManageError(message, 400, 0, HttpContext);\n         return StatusCode(400, errori);\n      }\n  }\n}\n```\n\n\n## Note:\n\nIf you are using this Nuget package, you can avoid using the SerilogCustomExtensions package, as it is already integrated in this one.\n\n\n## Contributing\n\nContributions and/or suggestions are always welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelodotnet%2Fmailkitcustomextensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangelodotnet%2Fmailkitcustomextensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelodotnet%2Fmailkitcustomextensions/lists"}