diff --git a/ToDo.yaml b/ToDo.yaml index f7fefa8..56da51e 100755 --- a/ToDo.yaml +++ b/ToDo.yaml @@ -12,7 +12,8 @@ Server: Need to update notification email Create page to notify cx that their work email has been verified - Verify that each resume section belongs to the resume it was created for: + Emails: + Make emails follow theme of website better Client: jobs/editor: diff --git a/src/Server/Controllers/CompanyController.cs b/src/Server/Controllers/CompanyController.cs index 003d06f..ff678d5 100644 --- a/src/Server/Controllers/CompanyController.cs +++ b/src/Server/Controllers/CompanyController.cs @@ -91,7 +91,7 @@ namespace BoredCareers.Controllers { EmailContents = Substitue(EmailContents, "@ID", CompanyID.ToString()); EmailContents = Substitue(EmailContents, "@VerifyPassword", test.EmailToken); - string result = _emailContext.Send(test.Email, EmailService.CompanyVerifyEmailSubject, EmailContents); + string result = await _emailContext.Send(test.Email, EmailService.CompanyVerifyEmailSubject, EmailContents); _emailContext._SentEmails.Add(key, DateTime.Now); return Redirect("/"); } diff --git a/src/Server/Server.csproj b/src/Server/Server.csproj index 88017e7..d455416 100755 --- a/src/Server/Server.csproj +++ b/src/Server/Server.csproj @@ -9,6 +9,7 @@ + diff --git a/src/Server/Services/BackgroundServices/JobCleanupService.cs b/src/Server/Services/BackgroundServices/JobCleanupService.cs index d943280..56a6fbb 100644 --- a/src/Server/Services/BackgroundServices/JobCleanupService.cs +++ b/src/Server/Services/BackgroundServices/JobCleanupService.cs @@ -51,7 +51,7 @@ namespace BoredCareers.Services.TimerService { string emailbody = EmailService.JobAutoClosedBody; //Substitue(emailbody, "@job", listing.JobListingID); - _em.Send(email, EmailService.JobAutoClosedSubject, emailbody); + await _em.Send(email, EmailService.JobAutoClosedSubject, emailbody); } } diff --git a/src/Server/Services/EmailService/EmailService.cs b/src/Server/Services/EmailService/EmailService.cs index a98fae8..ea0322b 100755 --- a/src/Server/Services/EmailService/EmailService.cs +++ b/src/Server/Services/EmailService/EmailService.cs @@ -1,4 +1,7 @@ -using System.Net.Mail; +using System.Threading.Tasks; +using MailKit.Net.Smtp; +using MailKit.Security; +using MimeKit; namespace BoredCareers.Services { public partial class EmailService { @@ -17,24 +20,28 @@ namespace BoredCareers.Services { EmailPassword = _EmailPassword; } - public string Send( string Destination, string Subject, string Body ) { - using (SmtpClient client = new SmtpClient( EmailServer, EmailPort )){ - client.EnableSsl = true; - client.Credentials = new System.Net.NetworkCredential( EmailAddress, EmailPassword ); - try { - MailMessage msg = new MailMessage(){ - IsBodyHtml = true, - Subject = Subject, - Body = Body - }; - msg.From = new MailAddress( EmailAddress, "no-reply" ); - msg.To.Add( new MailAddress( Destination ) ); - client.Send( msg ); - return "Success"; - } catch( Exception e ) { + public async Task Send(string Destination, string Subject, string Body) { + try { + MimeMessage message = new MimeMessage(); + message.From.Add(new MailboxAddress(EmailAddress.Split('@')[0], EmailAddress)); + message.To.Add(new MailboxAddress(Destination.Split('@')[0], Destination)); + message.Subject = Subject; + + BodyBuilder messageBody = new BodyBuilder(); + messageBody.HtmlBody = Body; + + message.Body = messageBody.ToMessageBody(); + + using (SmtpClient client = new SmtpClient()) { + await client.ConnectAsync(EmailServer, EmailPort); + client.Authenticate(new SaslMechanismLogin(EmailAddress, EmailPassword)); + string serverResponse = await client.SendAsync(message); + await client.DisconnectAsync(true); + return serverResponse; + } + } catch (Exception e) { return "An Error Has Occurred Sending Email : " + e.ToString(); } - } } }