diff --git a/CarCareTracker.csproj b/CarCareTracker.csproj
index 5d63a6b..7d3b2d7 100644
--- a/CarCareTracker.csproj
+++ b/CarCareTracker.csproj
@@ -13,6 +13,7 @@
+
diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs
index 1be8305..039b873 100644
--- a/Controllers/VehicleController.cs
+++ b/Controllers/VehicleController.cs
@@ -1153,6 +1153,10 @@ namespace CarCareTracker.Controllers
{
numbersArray.Add(upgradeRecords.Min(x => x.Date.Year));
}
+ if (odometerRecords.Any())
+ {
+ numbersArray.Add(odometerRecords.Min(x => x.Date.Year));
+ }
var minYear = numbersArray.Any() ? numbersArray.Min() : DateTime.Now.AddYears(-5).Year;
var yearDifference = DateTime.Now.Year - minYear + 1;
for (int i = 0; i < yearDifference; i++)
diff --git a/Helper/MailHelper.cs b/Helper/MailHelper.cs
index a2e2cb5..c126ae8 100644
--- a/Helper/MailHelper.cs
+++ b/Helper/MailHelper.cs
@@ -1,6 +1,6 @@
using CarCareTracker.Models;
-using System.Net.Mail;
-using System.Net;
+using MimeKit;
+using MailKit.Net.Smtp;
namespace CarCareTracker.Helper
{
@@ -15,13 +15,16 @@ namespace CarCareTracker.Helper
{
private readonly MailConfig mailConfig;
private readonly IFileHelper _fileHelper;
+ private readonly ILogger _logger;
public MailHelper(
IConfiguration config,
- IFileHelper fileHelper
+ IFileHelper fileHelper,
+ ILogger logger
) {
//load mailConfig from Configuration
mailConfig = config.GetSection("MailConfig").Get();
_fileHelper = fileHelper;
+ _logger = logger;
}
public OperationResponse NotifyUserForRegistration(string emailAddress, string token)
{
@@ -118,7 +121,7 @@ namespace CarCareTracker.Helper
{
foreach (string emailAddress in emailAddresses)
{
- SendEmail(emailAddress, emailSubject, emailBody, true, true);
+ SendEmail(emailAddress, emailSubject, emailBody);
}
return new OperationResponse { Success = true, Message = "Email Sent!" };
} catch (Exception ex)
@@ -126,33 +129,33 @@ namespace CarCareTracker.Helper
return new OperationResponse { Success = false, Message = ex.Message };
}
}
- private bool SendEmail(string emailTo, string emailSubject, string emailBody, bool isBodyHtml = false, bool useAsync = false) {
- string to = emailTo;
+ private bool SendEmail(string emailTo, string emailSubject, string emailBody) {
string from = mailConfig.EmailFrom;
var server = mailConfig.EmailServer;
- MailMessage message = new MailMessage(from, to);
+ var message = new MimeMessage();
+ message.From.Add(new MailboxAddress(from, from));
+ message.To.Add(new MailboxAddress(emailTo, emailTo));
message.Subject = emailSubject;
- message.Body = emailBody;
- message.IsBodyHtml = isBodyHtml;
- SmtpClient client = new SmtpClient(server);
- client.EnableSsl = mailConfig.UseSSL;
- client.Port = mailConfig.Port;
- client.Credentials = new NetworkCredential(mailConfig.Username, mailConfig.Password);
- try
+
+ var builder = new BodyBuilder();
+
+ builder.HtmlBody = emailBody;
+
+ message.Body = builder.ToMessageBody();
+
+ using (var client = new SmtpClient())
{
- if (useAsync)
- {
- client.SendMailAsync(message, new CancellationToken());
- }
- else
+ client.Connect(server, mailConfig.Port, MailKit.Security.SecureSocketOptions.Auto);
+ client.Authenticate(mailConfig.Username, mailConfig.Password);
+ try
{
client.Send(message);
+ return true;
+ } catch (Exception ex)
+ {
+ _logger.LogError(ex.Message);
+ return false;
}
- return true;
- }
- catch (Exception ex)
- {
- return false;
}
}
}
diff --git a/README.md b/README.md
index 1a907aa..66644fb 100644
--- a/README.md
+++ b/README.md
@@ -30,14 +30,15 @@ Read this [Getting Started Guide](https://docs.lubelogger.com/Getting%20Started)
[Search Existing Issues](https://github.com/hargata/lubelog/issues)
## Dependencies
-- Bootstrap
-- LiteDB
-- Npgsql
-- Bootstrap-DatePicker
-- SweetAlert2
-- CsvHelper
-- Chart.js
-- Drawdown
+- [Bootstrap](https://github.com/twbs/bootstrap)
+- [LiteDB](https://github.com/mbdavid/litedb)
+- [Npgsql](https://github.com/npgsql/npgsql)
+- [Bootstrap-DatePicker](https://github.com/uxsolutions/bootstrap-datepicker)
+- [SweetAlert2](https://github.com/sweetalert2/sweetalert2)
+- [CsvHelper](https://github.com/JoshClose/CsvHelper)
+- [Chart.js](https://github.com/chartjs/Chart.js)
+- [Drawdown](https://github.com/adamvleggett/drawdown)
+- [MailKit](https://github.com/jstedfast/MailKit)
## License
LubeLogger utilizes a dual-licensing model, see [License](/LICENSE) for more information
diff --git a/Views/Home/_Settings.cshtml b/Views/Home/_Settings.cshtml
index b9162e1..afa6e2a 100644
--- a/Views/Home/_Settings.cshtml
+++ b/Views/Home/_Settings.cshtml
@@ -247,6 +247,7 @@
CsvHelper
Chart.js
Drawdown
+ MailKit