public ServiceResult GetMessages() { EmailMessageManager um = new EmailMessageManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter); int count; DataFilter tmpFilter = this.GetFilter(Request); List <dynamic> emails = um.GetEmailMessages(CurrentUser.UUID, tmpFilter, out count); return(ServiceResponse.OK("", emails, count)); }
public ServiceResult Delete(string UUID) { if (string.IsNullOrWhiteSpace(UUID)) { return(ServiceResponse.Error("No UUID sent.")); } EmailMessageManager emailManager = new EmailMessageManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter); var res = emailManager.Get(UUID); if (res.Code != 200) { return(ServiceResponse.Error("Email not found.")); } var email = (EmailMessage)res.Result; email.Deleted = true; return(emailManager.Update(email)); }
public EmailMessageController(EmailMessageManager emailMessageManager) { _emailMessageManager = emailMessageManager; }
public async Task <ServiceResult> SendMessage(EmailMessage form)// public ServiceResult SendMessage(Message form) { if (form == null) { return(ServiceResponse.Error("No form was posted to the server.")); } try { form.DateSent = DateTime.UtcNow; bool isValidFormat = Validator.IsValidEmailFormat(form.EmailFrom); if (string.IsNullOrWhiteSpace(form.EmailFrom) || isValidFormat == false) { return(ServiceResponse.Error("You must provide a valid email address.")); } if (string.IsNullOrWhiteSpace(form.Body)) { return(ServiceResponse.Error("You must provide a message.")); } EmailMessageManager EmailMessageManager = new EmailMessageManager(Globals.DBConnectionKey, Request?.Headers?.Authorization?.Parameter); NetworkHelper network = new NetworkHelper(); string ipAddress = network.GetClientIpAddress(this.Request); EmailMessage EmailMessage = new EmailMessage(); EmailMessage.Body = form.Body + "<br/><br/><br/>Message Key:" + EmailMessage.UUID; EmailMessage.Subject = form.Subject; EmailMessage.EmailFrom = Cipher.Crypt(Globals.Application.AppSetting("AppKey"), form.EmailFrom.ToLower(), true); EmailMessage.UUIDType += "." + form.Type; if (form.Type?.ToLower() != "contactus") { EmailMessage.EmailTo = Globals.Application.AppSetting("SiteEmail"); } EmailMessage.DateCreated = DateTime.UtcNow; EmailMessage.IpAddress = ipAddress; EmailMessage.Status = "not_sent"; if (CurrentUser != null) { EmailMessage.CreatedBy = CurrentUser.UUID; EmailMessage.AccountUUID = CurrentUser.AccountUUID; } else { EmailMessage.CreatedBy = "ContactUsForm"; EmailMessage.AccountUUID = "ContactUsForm"; } UserManager um = new UserManager(Globals.DBConnectionKey, Request?.Headers?.Authorization?.Parameter); string toName = um.GetUserByEmail(EmailMessage.EmailTo)?.Name; string fromName = um.GetUserByEmail(form.EmailFrom)?.Name; EmailMessage.NameFrom = fromName; EmailMessage.NameTo = toName; if (EmailMessageManager.Insert(EmailMessage).Code == 500) { return(ServiceResponse.Error("Failed to save the email. Try again later.")); } EmailSettings settings = new EmailSettings(); settings.EncryptionKey = Globals.Application.AppSetting("AppKey"); settings.HostPassword = Globals.Application.AppSetting("EmailHostPassword"); settings.HostUser = Globals.Application.AppSetting("EmailHostUser"); settings.MailHost = Globals.Application.AppSetting("MailHost"); settings.MailPort = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort")); settings.SiteDomain = Globals.Application.AppSetting("SiteDomain"); settings.EmailDomain = Globals.Application.AppSetting("EmailDomain"); settings.SiteEmail = Globals.Application.AppSetting("SiteEmail"); settings.UseSSL = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL")); MailAddress ma = new MailAddress(settings.SiteEmail, settings.SiteEmail); MailMessage mail = new MailMessage(); mail.From = ma; // mail.ReplyToList.Add( ma ); mail.ReplyToList.Add(form.EmailFrom); mail.To.Add(EmailMessage.EmailTo); mail.Subject = EmailMessage.Subject; mail.Body = EmailMessage.Body + "<br/><br/><br/>IP:" + ipAddress; mail.IsBodyHtml = true; SMTP svc = new SMTP(Globals.DBConnectionKey, settings); return(svc.SendMail(mail)); } catch (Exception ex) { _fileLogger.InsertError(ex.DeserializeException(true), "SiteController", "SendMessage:" + JsonConvert.SerializeObject(form)); } return(ServiceResponse.Error("Failed to send message.")); }
/// <inheritdoc /> public override List <QueueToIndex> ProcessingMergedIndexQueue(List <KeyValuePair <string, object> > mergedIndexQueueItem, long id, Guid typeUid) { var list = new List <QueueToIndex>(); if (mergedIndexQueueItem == null) { return(list); } var queueToIndex = new QueueToIndex { Id = id, CardType = typeof(IEmailMessageFullTextSearchObject), Properties = new List <KeyValuePair <string, object> >() }; var idPair = mergedIndexQueueItem.Find( p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.Id))); if (idPair.Key != null) { queueToIndex.Properties.Add( new KeyValuePair <string, object>( LinqUtils.NameOf((IEmailMessageFullTextSearchObject d) => d.Id), idPair.Value)); } var typeUidPair = mergedIndexQueueItem.Find(p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.TypeUid))); if (typeUidPair.Key != null) { queueToIndex.Properties.Add( new KeyValuePair <string, object>( LinqUtils.NameOf((IEmailMessageFullTextSearchObject d) => d.TypeUid), typeUidPair.Value)); } var deletedPair = mergedIndexQueueItem.Find(p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.IsDeleted))); if (deletedPair.Key != null) { queueToIndex.Properties.Add( new KeyValuePair <string, object>( LinqUtils.NameOf((IEmailMessageFullTextSearchObject d) => d.IsDeleted), deletedPair.Value)); } var datePair = mergedIndexQueueItem.Find(p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.DateUtc))); if (datePair.Key != null) { queueToIndex.Properties.Add( new KeyValuePair <string, object>(LinqUtils.NameOf( (IEmailMessageFullTextSearchObject d) => d.DateUtc), datePair.Value)); } var subjectPair = mergedIndexQueueItem.Find(p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.Subject))); if (subjectPair.Key != null) { queueToIndex.Properties.Add( new KeyValuePair <string, object>(LinqUtils.NameOf( (IEmailMessageFullTextSearchObject d) => d.Subject), subjectPair.Value)); } var textPair = mergedIndexQueueItem.Find(p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.Text))); if (textPair.Key != null) { if (textPair.Value != null) { var textPairValue = textPair.Value.ToString(); queueToIndex.Properties.Add( new KeyValuePair <string, object>(LinqUtils.NameOf( (IEmailMessageFullTextSearchObject d) => d.Text), textPairValue)); } } var fromPair = mergedIndexQueueItem.Find(p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.From))); var toPair = mergedIndexQueueItem.Find(p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.To))); if (toPair.Key != null || fromPair.Key != null) { var emailMessage = EmailMessageManager.LoadOrNull(id); if (emailMessage != null) { var from = emailMessage.From.Select(c => c.EmailString).ToArray(); var to = emailMessage.To.Select(c => c.EmailString).ToArray(); queueToIndex.Properties.Add( new KeyValuePair <string, object>(LinqUtils.NameOf( (IEmailMessageFullTextSearchObject d) => d.From), new SerializableList <object>(from))); queueToIndex.Properties.Add( new KeyValuePair <string, object>(LinqUtils.NameOf( (IEmailMessageFullTextSearchObject d) => d.To), new SerializableList <object>(to))); queueToIndex.Properties.Add( new KeyValuePair <string, object>(LinqUtils.NameOf( (IEmailMessageFullTextSearchObject d) => d.Contractors), new SerializableList <long>(emailMessage.Contractors.Select(c => c.Id).ToArray()))); queueToIndex.Properties.Add( new KeyValuePair <string, object>(LinqUtils.NameOf( (IEmailMessageFullTextSearchObject d) => d.Contacts), new SerializableList <long>(emailMessage.Contacts.Select(c => c.Id).ToArray()))); } var ownersPair = mergedIndexQueueItem.Find(p => Equals(p.Key, LinqUtils.NameOf((IEmailMessage d) => d.Owners))); if (ownersPair.Value is ISet <IUserMailbox> ownersPairValue) { var owners = new SerializableList <object>(ownersPairValue.Select(c => c.EmailLogin)); queueToIndex.Properties.Add(new KeyValuePair <string, object>(LinqUtils.NameOf((IEmailMessageFullTextSearchObject d) => d.Owners), owners)); } } queueToIndex.DynamicProperties.AddRange((from i in mergedIndexQueueItem select i.Value).OfType <FieldIndexListItem>()); if (queueToIndex.Properties.Any() || queueToIndex.DynamicProperties.Any()) { list.Add(queueToIndex); } return(list); }