using System; using System.Collections.Generic; using System.Linq; using System.Net.Mail; using System.Net; using System.Text; using System.Threading.Tasks; using VetClinicBusinessLogic.BindingModels; namespace VetClinicBusinessLogic.BusinessLogic { public class MailWorker { protected string _mailLogin; protected string _mailPassword; protected string _smtpClientHost; protected int _smtpClientPort; protected string _popHost; protected int _popPort; public void MailConfig(MailConfigBindingModel config) { _mailLogin = config.MailLogin; _mailPassword = config.MailPassword; _smtpClientHost = config.SmtpClientHost; _smtpClientPort = config.SmtpClientPort; _popHost = config.PopHost; _popPort = config.PopPort; } public async void MailSendAsync(MailSendInfoBindingModel info) { if (string.IsNullOrEmpty(_mailLogin) || string.IsNullOrEmpty(_mailPassword)) { return; } if (string.IsNullOrEmpty(_smtpClientHost) || _smtpClientPort == 0) { return; } if (string.IsNullOrEmpty(info.MailAddress) || string.IsNullOrEmpty(info.Subject) || string.IsNullOrEmpty(info.Text)) { return; } await SendMailAsync(info); } private async Task SendMailAsync(MailSendInfoBindingModel info) { using var objMailMessage = new MailMessage(); using var objSmtpClient = new SmtpClient(_smtpClientHost, _smtpClientPort); try { objMailMessage.From = new MailAddress(_mailLogin); objMailMessage.To.Add(new MailAddress(info.MailAddress)); objMailMessage.Subject = info.Subject; objMailMessage.Body = info.Text; objMailMessage.SubjectEncoding = Encoding.UTF8; objMailMessage.BodyEncoding = Encoding.UTF8; objSmtpClient.UseDefaultCredentials = false; objSmtpClient.EnableSsl = true; objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; objSmtpClient.Credentials = new NetworkCredential(_mailLogin, _mailPassword); await Task.Run(() => objSmtpClient.Send(objMailMessage)); } catch (Exception) { throw; } } } }