Skip to content

Instantly share code, notes, and snippets.

@danielplawgo
Created February 2, 2021 04:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielplawgo/c890d7789ad3cdd09405d9727a01f51f to your computer and use it in GitHub Desktop.
Save danielplawgo/c890d7789ad3cdd09405d9727a01f51f to your computer and use it in GitHub Desktop.
SendGrid - wysyłka wiadomości email
"SendGrid": {
"ApiKey": "wygenerowany klucz api",
"SenderEmail": "blogtest@plawgo.pl",
"SenderName": "Blog PROGRAMUJE.NET"
}
"SendGrid": {
"ApiKey": "wygenerowany klucz api",
"SenderEmail": "blogtest@plawgo.pl",
"SenderName": "Blog PROGRAMUJE.NET",
"TemplateId": "id szablonu"
}
public class SendGridConfig
{
public string ApiKey { get; set; }
public string SenderEmail { get; set; }
public string SenderName { get; set; }
}
public class SendGridConfig
{
public string ApiKey { get; set; }
public string SenderEmail { get; set; }
public string SenderName { get; set; }
public string TemplateId { get; set; }
}
[Route("api/[controller]")]
[ApiController]
public class SendGridController : ControllerBase
{
private readonly SendGridConfig _config;
public SendGridController(IOptions<SendGridConfig> config)
{
_config = config.Value;
}
[HttpPost]
public async Task<IActionResult> Send(SendDto request)
{
var client = new SendGridClient(_config.ApiKey);
var msg = MailHelper.CreateSingleEmail(new EmailAddress(_config.SenderEmail, _config.SenderName),
new EmailAddress(request.Email, request.Name),
"Email Subject",
"Email body",
"<strong>Email body</strong>");
var response = await client.SendEmailAsync(msg);
return await ProcessResponse(response);
}
private async Task<IActionResult> ProcessResponse(Response response)
{
var responseContent = await response.Body.ReadAsStringAsync();
return string.IsNullOrEmpty(responseContent) ? Ok() : BadRequest(responseContent);
}
}
[HttpPut]
public async Task<IActionResult> SendWithTemplate(SendDto request)
{
var client = new SendGridClient(_config.ApiKey);
var msg = MailHelper.CreateSingleTemplateEmail(new EmailAddress(_config.SenderEmail, _config.SenderName),
new EmailAddress(request.Email, request.Name),
_config.TemplateId,
new { Name = request.Name});
var response = await client.SendEmailAsync(msg);
return await ProcessResponse(response);
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<SendGridConfig>(Configuration.GetSection("SendGrid"));
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "SendGridTests", Version = "v1" });
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment