From da1ee4dc02f70e8253467fbd96c47b0556e62a9d Mon Sep 17 00:00:00 2001 From: Programmist73 Date: Sat, 20 May 2023 01:43:20 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=98=D0=A1=D0=AC=D0=9C=D0=9E=20=D0=9E?= =?UTF-8?q?=D0=A2=D0=9F=D0=A0=D0=90=D0=92=D0=9B=D0=95=D0=9D=D0=9D=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/MessageInfoLogic.cs | 33 ----- .../BusinessLogics/ReportClientLogic.cs | 40 +++++- .../MailWorker/AbstractMailWorker.cs | 107 --------------- .../MailWorker/MailKitWorker.cs | 122 ++++++++---------- .../Controllers/HomeController.cs | 5 +- .../BindingModels/MailConfigBindingModel.cs | 2 + .../BindingModels/MailSendInfoBindingModel.cs | 10 +- .../BindingModels/ReportBindingModel.cs | 3 + .../IMessageInfoLogic.cs | 20 --- .../ViewModels/FileViewModel.cs | 17 +++ .../Enums/MailsEnum.cs | 15 +++ .../Implements/ClientStorage.cs | 8 ++ .../Controllers/ReportController.cs | 4 +- .../BankYouBankruptRestAPI/Program.cs | 8 +- .../BankYouBankruptRestAPI/appsettings.json | 8 +- .../Отчёт_по_картам.pdf | Bin 36066 -> 36073 bytes 16 files changed, 161 insertions(+), 241 deletions(-) delete mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MessageInfoLogic.cs delete mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/AbstractMailWorker.cs delete mode 100644 BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IMessageInfoLogic.cs create mode 100644 BankYouBankrupt/BankYouBankruptContracts/ViewModels/FileViewModel.cs create mode 100644 BankYouBankrupt/BankYouBankruptDataModels/Enums/MailsEnum.cs diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MessageInfoLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MessageInfoLogic.cs deleted file mode 100644 index b98f5f0..0000000 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MessageInfoLogic.cs +++ /dev/null @@ -1,33 +0,0 @@ -using BankYouBankruptContracts.BindingModels; -using BankYouBankruptContracts.BusinessLogicsContracts; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptBusinessLogic.BusinessLogics -{ - public class MessageInfoLogic : IMessageInfoLogic - { - private readonly ILogger _logger; - - //private readonly IMessageInfoStorage _messageInfoStorage; - - public MessageInfoLogic(ILogger logger) - { - _logger = logger; - } - - public bool Create(MessageInfoBindingModel model) - { - throw new NotImplementedException(); - } - - public bool Update(MessageInfoBindingModel model) - { - throw new NotImplementedException(); - } - } -} diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs index f08fe3b..b1bee23 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs @@ -13,6 +13,12 @@ using BankYouBankruptContracts.ViewModels.Client.Reports; using BankYouBankruptContracts.ViewModels; using BankYouBankruptDataModels.Enums; using BankYouBankruptContracts.ViewModels.Client.Default; +using DocumentFormat.OpenXml.Wordprocessing; +using System.Net.Mail; +using System.Reflection.PortableExecutable; +using Spire.Pdf.Graphics; +using DocumentFormat.OpenXml.Packaging; +using BankYouBankruptBusinessLogic.MailWorker; namespace BankYouBankruptBusinessLogic.BusinessLogics { @@ -22,23 +28,30 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics private readonly IDebitingStorage _debitingStorage; private readonly ICardStorage _cardStorage; private readonly IMoneyTransferStorage _moneyTransferStorage; + private readonly IClientStorage _clientStorage; private readonly AbstractSaveToExcel _saveToExcel; private readonly AbstractSaveToWord _saveToWord; private readonly AbstractSaveToPdf _saveToPdf; + private readonly MailKitWorker _mailKitWorker; + public ReportClientLogic(ICreditingStorage creditingStorage, IDebitingStorage debitingStorage, AbstractSaveToExcel saveToExcel, AbstractSaveToWord saveToWord, AbstractSaveToPdf saveToPdf, - ICardStorage cardStorage, IMoneyTransferStorage moneyTransferStorage) + ICardStorage cardStorage, IMoneyTransferStorage moneyTransferStorage, + MailKitWorker mailKitWorker, IClientStorage clientStorage) { _creditingStorage = creditingStorage; _debitingStorage = debitingStorage; _cardStorage = cardStorage; _moneyTransferStorage = moneyTransferStorage; + _clientStorage = clientStorage; _saveToExcel = saveToExcel; _saveToWord = saveToWord; _saveToPdf = saveToPdf; + + _mailKitWorker = mailKitWorker; } public List? GetCrediting(ReportBindingModel model) @@ -136,7 +149,16 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics return totalList; } - public void SaveToExcelFile(ReportBindingModel model, OfficeOperationEnum operationEnum) + public string GetClientEmail(ReportBindingModel model) + { + return _clientStorage.GetElement(new ClientSearchModel + { + Id = model.ClientId + }).Email; + } + + + public void SaveToExcelFile(ReportBindingModel model, OfficeOperationEnum operationEnum) { if(operationEnum == OfficeOperationEnum.Между_cчетами) { @@ -216,7 +238,19 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics DateTo = model.DateTo!.Value, ReportCrediting = listCreditings, ReportDebiting = listDebitings - }); + }); + + byte[] pdf = System.IO.File.ReadAllBytes("C:\\Users\\Programmist73\\Desktop\\Практика\\2-й курс\\4-й семестр\\CourseWork_BankYouBankrupt\\BankYouBankrupt\\BankYouBankruptRestAPI\\Отчёт_по_картам.pdf"); + + _mailKitWorker.SendMailAsync(new() + { + MailAddress = GetClientEmail(model), + Subject = "Отчёт по картам", + Text = $"За период с {model.DateFrom} " + + $"по {model.DateTo}.", + File = pdf, + Role = model.Role + }); //возврат полученных списков для отображения на вебе return new ReportClientViewModelForHTML diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/AbstractMailWorker.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/AbstractMailWorker.cs deleted file mode 100644 index 1efa243..0000000 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/AbstractMailWorker.cs +++ /dev/null @@ -1,107 +0,0 @@ -using BankYouBankruptContracts.BindingModels; -using BankYouBankruptContracts.BusinessLogicsContracts; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptBusinessLogic.MailWorker -{ - public abstract class AbstractMailWorker - { - protected string _mailLogin = string.Empty; - - protected string _mailPassword = string.Empty; - - protected string _smtpClientHost = string.Empty; - - protected int _smtpClientPort; - - protected string _popHost = string.Empty; - - protected int _popPort; - - private readonly IMessageInfoLogic _messageInfoLogic; - - private readonly IClientLogic _clientLogic; - - private readonly ILogger _logger; - - public AbstractMailWorker(ILogger logger, IMessageInfoLogic messageInfoLogic, IClientLogic clientLogic) - { - _logger = logger; - _messageInfoLogic = messageInfoLogic; - _clientLogic = clientLogic; - } - - public void MailConfig(MailConfigBindingModel config) - { - _mailLogin = config.MailLogin; - _mailPassword = config.MailPassword; - _smtpClientHost = config.SmtpClientHost; - _smtpClientPort = config.SmtpClientPort; - _popHost = config.PopHost; - _popPort = config.PopPort; - - _logger.LogDebug("Config: {login}, {password}, {clientHost}, {clientPOrt}, { popHost}, { popPort}", - _mailLogin, _mailPassword, _smtpClientHost, _smtpClientPort, _popHost, _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; - } - - _logger.LogDebug("Send Mail: {To}, {Subject}", info.MailAddress, info.Subject); - - await SendMailAsync(info); - } - - public async void MailCheck() - { - if (string.IsNullOrEmpty(_mailLogin) || string.IsNullOrEmpty(_mailPassword)) - { - return; - } - - if (string.IsNullOrEmpty(_popHost) || _popPort == 0) - { - return; - } - - if (_messageInfoLogic == null) - { - return; - } - - var list = await ReceiveMailAsync(); - - _logger.LogDebug("Check Mail: {Count} new mails", list.Count); - - foreach (var mail in list) - { - mail.ClientId = _clientLogic.ReadElement(new() { Email = mail.SenderName })?.Id; - - _messageInfoLogic.Create(mail); - } - } - - protected abstract Task SendMailAsync(MailSendInfoBindingModel info); - - protected abstract Task> ReceiveMailAsync(); - } -} diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/MailKitWorker.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/MailKitWorker.cs index 4786eaa..78670ef 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/MailKitWorker.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/MailKitWorker.cs @@ -10,82 +10,72 @@ using System.Text; using System.Threading.Tasks; using MailKit.Net.Pop3; using MailKit.Security; +using BankYouBankruptDataModels.Enums; namespace BankYouBankruptBusinessLogic.MailWorker { - public class MailKitWorker : AbstractMailWorker + //класс, отвечающий за отправку письма + public class MailKitWorker { - public MailKitWorker(ILogger logger, IMessageInfoLogic messageInfoLogic, IClientLogic clientLogic) - : base(logger, messageInfoLogic, clientLogic) { } + private string _mailLogin = string.Empty; - protected override async Task SendMailAsync(MailSendInfoBindingModel info) + private string _mailPassword = string.Empty; + + private string _smtpClientHost = string.Empty; + + private int _smtpClientPort; + + private readonly ILogger logger; + + public MailKitWorker(ILogger logger) + { + this.logger = logger; + } + + public void MailConfig(MailConfigBindingModel config) + { + _mailLogin = config.MailLogin; + _mailPassword = config.MailPassword; + _smtpClientHost = config.SmtpClientHost; + _smtpClientPort = config.SmtpClientPort; + } + + public async void SendMailAsync(MailSendInfoBindingModel info) { - using var objMailMessage = new MailMessage(); + using var objMailMessage = new MailMessage(); + using var objSmtpClient = new SmtpClient(_smtpClientHost, _smtpClientPort); - 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; - 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; + MemoryStream ms = new(info.File); - objSmtpClient.UseDefaultCredentials = false; - objSmtpClient.EnableSsl = true; - objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; - objSmtpClient.Credentials = new NetworkCredential(_mailLogin, _mailPassword); + if(info.Role == MailsEnum.Клиент) + { + objMailMessage.Attachments.Add(new Attachment(ms, "Отчёт_по_картам.pdf", "application/pdf")); + } + else + { + objMailMessage.Attachments.Add(new Attachment(ms, "Отчёт_по_счетам.pdf", "application/pdf")); + } - await Task.Run(() => objSmtpClient.Send(objMailMessage)); - } - catch (Exception) - { - throw; - } - } + objSmtpClient.UseDefaultCredentials = false; + objSmtpClient.EnableSsl = true; + objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; + objSmtpClient.Credentials = new NetworkCredential(_mailLogin, _mailPassword); - protected override async Task> ReceiveMailAsync() - { - var list = new List(); - - using var client = new Pop3Client(); - - await Task.Run(() => - { - try - { - client.Connect(_popHost, _popPort, SecureSocketOptions.SslOnConnect); - - client.Authenticate(_mailLogin, _mailPassword); - - for (int i = 0; i < client.Count; i++) - { - var message = client.GetMessage(i); - - foreach (var mail in message.From.Mailboxes) - { - list.Add(new MessageInfoBindingModel - { - DateDelivery = message.Date.DateTime, - MessageId = message.MessageId, - SenderName = mail.Address, - Subject = message.Subject, - Body = message.TextBody - }); - } - } - } - catch (AuthenticationException) - { } - finally - { - client.Disconnect(true); - } - }); - - return list; - } + await Task.Run(() => objSmtpClient.Send(objMailMessage)); + } + catch (Exception) + { + throw; + } + } } } diff --git a/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs b/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs index 94582cb..bde8d4e 100644 --- a/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs +++ b/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs @@ -306,7 +306,7 @@ namespace BankYouBankruptClientApp.Controllers } [HttpPost] - public IActionResult CreateReport(DateTime dateFrom, DateTime dateTo) + public IActionResult CreateReport(DateTime dateFrom, DateTime dateTo, int clientId) { if (APIClient.Client == null) { @@ -318,7 +318,8 @@ namespace BankYouBankruptClientApp.Controllers return View(APIClient.PostRequestReport("api/Report/CreateClientReport", new ReportSupportBindingModel() { DateFrom = dateFrom, - DateTo = dateTo + DateTo = dateTo, + ClientId = clientId })); } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailConfigBindingModel.cs b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailConfigBindingModel.cs index a369088..2e56009 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailConfigBindingModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailConfigBindingModel.cs @@ -17,8 +17,10 @@ namespace BankYouBankruptContracts.BindingModels public int SmtpClientPort { get; set; } + //можно без них? public string PopHost { get; set; } = string.Empty; + //можно без них? public int PopPort { get; set; } } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailSendInfoBindingModel.cs b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailSendInfoBindingModel.cs index 94139b5..1dcef09 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailSendInfoBindingModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailSendInfoBindingModel.cs @@ -1,4 +1,5 @@ -using System; +using BankYouBankruptDataModels.Enums; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -14,5 +15,10 @@ namespace BankYouBankruptContracts.BindingModels public string Subject { get; set; } = string.Empty; public string Text { get; set; } = string.Empty; - } + + //для отправки pdf + public byte[] File { get; set; } = Array.Empty(); + + public MailsEnum Role { get; set; } + } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs index 57e07a6..bb62042 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs @@ -1,4 +1,5 @@ using BankYouBankruptContracts.ViewModels.Client.Reports; +using BankYouBankruptDataModels.Enums; using System; using System.Collections.Generic; using System.Linq; @@ -22,5 +23,7 @@ namespace BankYouBankruptContracts.BindingModels public DateTime? DateFrom { get; set; } public DateTime? DateTo { get; set; } + + public MailsEnum Role { get; set; } } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IMessageInfoLogic.cs b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IMessageInfoLogic.cs deleted file mode 100644 index 8d26b7d..0000000 --- a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IMessageInfoLogic.cs +++ /dev/null @@ -1,20 +0,0 @@ -using BankYouBankruptContracts.BindingModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptContracts.BusinessLogicsContracts -{ - public interface IMessageInfoLogic - { - //List? ReadList(MessageInfoSearchModel? model); - - //MessageInfoViewModel? ReadElement(MessageInfoSearchModel model); - - bool Create(MessageInfoBindingModel model); - - bool Update(MessageInfoBindingModel model); - } -} diff --git a/BankYouBankrupt/BankYouBankruptContracts/ViewModels/FileViewModel.cs b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/FileViewModel.cs new file mode 100644 index 0000000..3f7d6e1 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/FileViewModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BankYouBankruptContracts.ViewModels +{ + public class FileViewModel + { + public byte[] Bytes { get; set; } = Array.Empty(); + + public int[] Test { get; set; } = Array.Empty(); + + public string StringBytes { get; set; } = string.Empty; + } +} diff --git a/BankYouBankrupt/BankYouBankruptDataModels/Enums/MailsEnum.cs b/BankYouBankrupt/BankYouBankruptDataModels/Enums/MailsEnum.cs new file mode 100644 index 0000000..fb18f98 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptDataModels/Enums/MailsEnum.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BankYouBankruptDataModels.Enums +{ + public enum MailsEnum + { + Клиент = 0, + + Кассир = 1 + } +} diff --git a/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/ClientStorage.cs b/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/ClientStorage.cs index d8e7d1f..7a561f5 100644 --- a/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/ClientStorage.cs +++ b/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/ClientStorage.cs @@ -32,7 +32,15 @@ namespace BankYouBankruptDatabaseImplement.Implements { return null; } + using var context = new BankYouBancruptDatabase(); + + //сработает для поиска почты для отправки файла + if(model.Id.HasValue && string.IsNullOrEmpty(model.Password)) + { + return context.Clients.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; + } + return context.Clients.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Email) && x.Email == model.Email && !string.IsNullOrEmpty(model.Password) && x.Password == model.Password) || (model.Id.HasValue && x.Id == model.Id)) diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs index 386f998..dc12bbd 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs @@ -47,7 +47,9 @@ namespace BankYouBankruptRestAPI.Controllers { FileName = "Отчёт_по_картам.pdf", DateFrom = model.DateFrom, - DateTo = model.DateTo + DateTo = model.DateTo, + Role = MailsEnum.Клиент, + ClientId = model.ClientId }); return result; diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs index 922ac20..4775526 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs @@ -36,9 +36,7 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddSingleton(); -builder.Services.AddTransient(); - -builder.Services.AddTransient(); +builder.Services.AddSingleton(); //общие классы формировани отчётов builder.Services.AddTransient(); @@ -58,7 +56,7 @@ builder.Services.AddSwaggerGen(c => var app = builder.Build(); //Mails Service -var mailSender = app.Services.GetService(); +var mailSender = app.Services.GetService(); mailSender?.MailConfig(new MailConfigBindingModel { @@ -66,8 +64,6 @@ mailSender?.MailConfig(new MailConfigBindingModel MailPassword = builder.Configuration?.GetSection("MailPassword")?.Value?.ToString() ?? string.Empty, SmtpClientHost = builder.Configuration?.GetSection("SmtpClientHost")?.Value?.ToString() ?? string.Empty, SmtpClientPort = Convert.ToInt32(builder.Configuration?.GetSection("SmtpClientPort")?.Value?.ToString()), - PopHost = builder.Configuration?.GetSection("PopHost")?.Value?.ToString() ?? string.Empty, - PopPort = Convert.ToInt32(builder.Configuration?.GetSection("PopPort")?.Value?.ToString()) }); // Configure the HTTP request pipeline. diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/appsettings.json b/BankYouBankrupt/BankYouBankruptRestAPI/appsettings.json index 10f68b8..4fac28d 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/appsettings.json +++ b/BankYouBankrupt/BankYouBankruptRestAPI/appsettings.json @@ -5,5 +5,11 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + + "AllowedHosts": "*", + + "SmtpClientHost": "smtp.gmail.com", + "SmtpClientPort": "587", + "MailLogin": "uveselchak99@gmail.com", + "MailPassword": "nqkv jzzq fryi leao" } diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf index da49dbd8938c2b4d0a8539eafe236ccde8a57182..139b5d22b0f30adf576d187c6d8c766c21d7921b 100644 GIT binary patch delta 3922 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