using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Security.Claims;
using System.Threading.Tasks;
using System.Web;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using Microsoft.Owin.Security;
using Project_Unite.Models;
namespace Project_Unite
{
public class EmailService : IIdentityMessageService
{
public async Task SendAsync(IdentityMessage message)
{
try
{
var siteConfig = new ApplicationDbContext().Configs.FirstOrDefault();
var smtp = new SmtpClient(siteConfig.SMTPServer, siteConfig.SMTPPort);
smtp.UseDefaultCredentials = false;
if (siteConfig.UseTLSEncryption)
smtp.EnableSsl = true; //This is misleading... We want TLS but all we have is SSL. Oh well.
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(siteConfig.SMTPUsername, siteConfig.SMTPPassword);
var sMsg = new MailMessage(siteConfig.SMTPReturnAddress, message.Destination);
sMsg.Body = @"
" + CommonMark.CommonMarkConverter.Convert(message.Body) + "
"; sMsg.Subject = $"[{siteConfig.SiteName}] " + message.Subject; sMsg.IsBodyHtml = true; smtp.DeliveryMethod = SmtpDeliveryMethod.Network; var db = new ApplicationDbContext(); db.AuditLogs.Add(new AuditLog("system", AuditLogLevel.Admin, $"Email sending...{a.Error}";
var ndb = new ApplicationDbContext();
ndb.AuditLogs.Add(alog);
await ndb.SaveChangesAsync();
};
smtp.Send(sMsg);
}
catch (Exception ex)
{
var db = new ApplicationDbContext();
db.AuditLogs.Add(new AuditLog("system", AuditLogLevel.Admin, $@"Failed to send email:
{ex}"));
db.SaveChanges();
}
return;
}
}
public class SmsService : IIdentityMessageService
{
public Task SendAsync(IdentityMessage message)
{
// Plug in your SMS service here to send a text message.
return Task.FromResult(0);
}
}
// Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application.
public class ApplicationUserManager : UserManager