You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.6 KiB
C#

using System.Net.Mail;
using System.Collections.Generic;
using System;
using Microsoft.Extensions.Configuration;
using System.Linq;
namespace Common.Library.Email
{
public class SendEmail
{
private EmailConfig _config;
public SendEmail(EmailConfig config)
{
_config = config;
}
public void Send()
{
MailMessage message = null;
try
{
message = GetMessage();
SmtpClient mailClient = new(_config.SMTPServer, _config.SMTPServerPort);
mailClient.Send(message);
}
catch (Exception)
{
throw;
}
finally
{
if(message != null)
{
message.Dispose();
}
}
}
public void Send(EmailConfig config)
{
_config = config;
Send();
}
private MailMessage GetMessage()
{
MailMessage message = new()
{
Subject = _config.Subject,
Body = _config.Body,
From = new(_config.From),
IsBodyHtml = _config.IsHtml
};
message.AddTo(_config.To);
message.AddCC(_config.CC);
message.AddBCC(_config.BCC);
return message;
}
}
public class EmailConfig
{
public string From { get; set; }
public List<string> To { get; set; }
public List<string> BCC { get; set; }
public List<string> CC { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public bool IsHtml { get; set; }
public string SMTPServer { get; set; }
public int SMTPServerPort { get; set; }
public static EmailConfig GetEmailConfig(IConfiguration configuration)
{
return new()
{
To = configuration?.GetSection("Email:To").Get<List<string>>(),
BCC = configuration?.GetSection("Email:BCC").Get<List<string>>(),
CC = configuration?.GetSection("Email:CC").Get<List<string>>(),
Subject = configuration?.GetSection("Email")["Subject"],
IsHtml = bool.Parse(configuration?.GetSection("Email")["IsHtml"]),
SMTPServer = configuration?.GetSection("Email")["SMTPServer"],
SMTPServerPort = int.Parse(configuration?.GetSection("Email")["SMTPServerPort"])
};
}
}
}