예제 #1
0
        public void Receive(MailinData data)
        {
            try
            {
                var user = usersRepository.Find(w => w.CloudmailinEmail.Equals(data.Envelope.To));
                var unitsHelper = new UnitsHelper();
                if (user != null)
                {
                    if (UserHelper.GetUserUsedDiskSpase(user.Id) / 1073741824 < unitsHelper.GetLimitOfDiskSpase(user.Units))
                    {
                      //  AddLog("Second if: ");
                        var lastEmail = emailsRepository.FindAll(e => e.User_Id == user.Id).Last();
                     //   AddLog("lastEmail.Id: " + lastEmail.Id);
                        if (lastEmail != null)
                        {
                            if (lastEmail.Date.Month != DateTime.Now.Month)
                            {
                                user.EmailsParsed = 1;
                            }
                            else if (user.EmailsParsed < unitsHelper.GetLimitOfEmails(user.Units))
                            {
                                user.EmailsParsed += 1;
                            }
                            else
                            {
                                return;
                            }
                        }
                        else
                        {
                          //  AddLog("5");
                            user.EmailsParsed = 1;
                        }
                    }
                    else
                    {
                      //  AddLog("6");
                        return;
                    }
                    List<Model.AttachmentModels> Attachment = new List<Model.AttachmentModels>();

                    if (data.Attachments != null)
                    {
                      //  AddLog("1");
                        foreach (var emailAttachments in data.Attachments)
                        {
                            Model.AttachmentModels attachment = new Model.AttachmentModels();
                            if (emailAttachments.Content != null)
                            {
                                string path = @"D:\home\site\wwwroot\App_Data\UploadTemp\" + emailAttachments.File_Name;
                                System.IO.File.WriteAllBytes(path, emailAttachments.Content);
                                attachment.Name = emailAttachments.File_Name;
                                attachment.Size = emailAttachments.Size;
                                Attachment.Add(attachment);
                            }
                        }
                     //   AddLog("2");
                    }

                    var emailSize = data.Html.Length * 4;
                    emailSize += data.Plain.Length * 4;
                    emailSize += data.Envelope.From.Length * 4;
                    emailSize += data.Headers.Subject.Length * 4;

                    Model.EmailModels Email = new Model.EmailModels
                    {
                        From = HttpUtility.HtmlEncode(data.Envelope.From),
                        Subject = HttpUtility.HtmlEncode(data.Headers.Subject),
                        Date = data.Headers.Date,
                        Content = data.Plain,
                        ContentHtml = data.Html,
                        User_Id = user.Id,
                        EmailSize = emailSize
                    };

                    try
                    {
                        emailsRepository.Add(Email);
                        emailsRepository.Commit();
                    }
                    catch(Exception ex)
                    {
                        AddLog("emailsRepository.Commit(): " + ex.Message);
                    }
                    if (Attachment != null && Attachment.Count > 0)
                    {
                        foreach (var attachment in Attachment)
                        {
                            attachment.EmailModels_Id = Email.Id;
                            attachmentsRepository.Add(attachment);
                        }
                        try
                        {
                            attachmentsRepository.Commit();
                        }
                        catch (Exception ex)
                        {
                            AddLog(" attachmentsRepository.Commit(): " + ex.Message);
                        }
                    }
                    UserHelper.newEmailWasRiceived = true;
                  //  AddLog("3");
                    var brandNewEmailId = emailsRepository.GetBrandNew(w => w.Date.Equals(data.Headers.Date)).Id;
                  //  AddLog("4");
                    ParseHelper.TryToParseEmail(brandNewEmailId, user.Id);
                }
            }
            catch(Exception ex)
            {
                    AddLog("Receive(): " + ex.Message);
            }
        }
예제 #2
0
 partial void DeleteAttachmentModels(AttachmentModels instance);
예제 #3
0
 partial void InsertAttachmentModels(AttachmentModels instance);
예제 #4
0
 partial void UpdateAttachmentModels(AttachmentModels instance);
예제 #5
0
		private void detach_AttachmentModels(AttachmentModels entity)
		{
			this.SendPropertyChanging();
			entity.EmailModels = null;
		}