added email ability
parent
bdaeac6f3e
commit
615f79c338
@ -0,0 +1,30 @@
|
||||
using System.Net.Mail;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Common.Library.Email
|
||||
{
|
||||
public static class EmailExtensions
|
||||
{
|
||||
public static void AddTo(this MailMessage message, List<string> addresses)
|
||||
{
|
||||
addresses.ForEach(address => message.To.Add(address));
|
||||
}
|
||||
|
||||
public static void AddBCC(this MailMessage message, List<string> addresses)
|
||||
{
|
||||
if(addresses != null && addresses.Count > 0)
|
||||
{
|
||||
addresses.ForEach(address => message.Bcc.Add(address));
|
||||
}
|
||||
}
|
||||
|
||||
public static void AddCC(this MailMessage message, List<string> addresses)
|
||||
{
|
||||
if(addresses != null && addresses.Count > 0)
|
||||
{
|
||||
addresses.ForEach(address => message.CC.Add(address));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
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"])
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue