コード例 #1
0
        /// <summary>
        /// Отправка письма пользователям по группе
        /// </summary>
        /// <param name="mailOutlook">Письма заступившие</param>
        /// <param name="arrayUsers">Рассылка пользователям</param>
        public void SendMailIn(MailLotusOutlookIn mailOutlook, List <string> arrayUsers)
        {
            Db.LotusConnectedDataBaseServer(Config.LotusServer, Config.LotusMailSend);
            Db.DeleteDataBaseAllMailSizeWarning();
            DocumentGenerationAllDxl document = new DocumentGenerationAllDxl(Db.Db);

            document.DocumentGenerationMailMemo(arrayUsers, "От кого: " + mailOutlook.MailAdress + " Тема: " + mailOutlook.SubjectMail, Db.Session.UserName, mailOutlook.Body, mailOutlook.FullPathFile);
            DonloadOnCreateDxlFile download = new DonloadOnCreateDxlFile();

            download.DxlFileSave(Config.PathGenerateScheme, document.Document, typeof(note));
            var noteId = download.ImportDxlFile(Config.PathGenerateScheme, Db.Db);

            if (noteId != null)
            {
                var docSave = Db.Db.GetDocumentByID(noteId);
                docSave.Send(false);
            }
        }
コード例 #2
0
        /// <summary>
        /// Рассылка писем если пришло Html В случае если зашло Html
        /// </summary>
        /// <param name="mailOutlook">Письма заступившие</param>
        /// <param name="arrayUsers">Рассылка пользователям</param>
        public void SendMailMimeHtml(MailLotusOutlookIn mailOutlook, List <string> arrayUsers)
        {
            Db.LotusConnectedDataBaseServer(Config.LotusServer, Config.LotusMailSend);
            NotesStream = Db.Db.Parent.CreateStream();
            Document    = Db.Db.CreateDocument();
            try
            {
                if (Db.Db == null)
                {
                    throw new InvalidOperationException("Фатальная ошибка нет соединения с сервером!");
                }
                Db.DeleteDataBaseAllMailSizeWarning();
                Document.AppendItemValue("Subject", "От кого: " + mailOutlook.MailAdress + " Тема: " + mailOutlook.SubjectMail);
                Document.AppendItemValue("Recipients", Db.Session.UserName);
                Document.AppendItemValue("OriginalTo", Db.Session.UserName);
                Document.AppendItemValue("From", Db.Session.UserName);
                Document.AppendItemValue("OriginalFrom", Db.Session.UserName);
                Document.AppendItemValue("SendTo", arrayUsers.ToArray());

                var mimeEntity = Document.CreateMIMEEntity();

                var mimeHeader = mimeEntity.CreateHeader("MIME-Version");
                mimeHeader.SetHeaderVal("1.0");

                mimeHeader = mimeEntity.CreateHeader("Content-Type");
                mimeHeader.SetHeaderValAndParams("multipart/mixed");

                var mimeChild = mimeEntity.CreateChildEntity();
                NotesStream.WriteText(mailOutlook.Body);

                mimeChild.SetContentFromText(NotesStream, "text/html;charset=\"utf-8\"", MIME_ENCODING.ENC_NONE);
                mimeChild = mimeEntity.CreateChildEntity();

                if (File.Exists(mailOutlook.FullPathFile))
                {
                    NotesStream.Truncate();
                    NotesStream.Open(mailOutlook.FullPathFile);
                    mimeHeader = mimeChild.CreateHeader("Content-Disposition");
                    mimeHeader.SetHeaderVal($"attachment; filename=\"{mailOutlook.NameFile}\"");
                    mimeChild.SetContentFromBytes(NotesStream, $"application/zip; name=\"{mailOutlook.NameFile}\"", MIME_ENCODING.ENC_IDENTITY_BINARY);
                }
                Document.CloseMIMEEntities(true);
                Db.Db.Parent.ConvertMime = true;
                if (Document.ComputeWithForm(true, false))
                {
                    Document.Save(true, true);
                    Document.Send(false);
                    NotesStream.Truncate();
                    NotesStream.Close();
                }
            }
            catch (Exception e)
            {
                Loggers.Log4NetLogger.Error(new Exception("В рассылке Html письма возникла ошибка!"));
                Loggers.Log4NetLogger.Error(e);
            }
            finally
            {
                if (Document != null)
                {
                    Marshal.ReleaseComObject(Document);
                }
                Document = null;
                if (NotesStream != null)
                {
                    Marshal.ReleaseComObject(NotesStream);
                }
                NotesStream = null;
            }
        }
コード例 #3
0
        /// <summary>
        /// Пересылка с почты oit на пользователей Lotus
        /// </summary>
        /// <param name="parameters"></param>
        public void StartMessageOit(ConfigFile.ConfigFile parameters)
        {
            try
            {
                int            count = 0;
                ZipAttachments zip   = new ZipAttachments();
                using (Pop3Client client = new Pop3Client())
                {
                    client.CheckCertificateRevocation = false;
                    client.Connect(parameters.Pop3Address, 995, true);
                    MailSender mail = new MailSender();
                    Loggers.Log4NetLogger.Info(new Exception($"Соединение с сервером eups.tax.nalog.ru установлено (OIT)"));
                    client.Authenticate(parameters.LoginOit, parameters.PasswordOit);
                    Loggers.Log4NetLogger.Info(new Exception($"Пользователь проверен (OIT)"));
                    if (client.IsConnected)
                    {
                        MailLogicLotus mailSave       = new MailLogicLotus();
                        SelectSql      select         = new SelectSql();
                        UserLotus      userSqlDefault = select.FindUserGroup(7);
                        int            messageCount   = client.GetMessageCount();

                        for (int i = 0; i < messageCount; i++)
                        {
                            MimeMessage message             = client.GetMessage(i);
                            var         messageAttaches     = message.Attachments as List <MimeEntity> ?? new List <MimeEntity>();
                            var         messageBodyAttaches = new List <MimeEntity>();
                            messageBodyAttaches.AddRange(message.BodyParts);
                            var calendar = messageBodyAttaches.Where(x => x.ContentType.MimeType == "text/calendar").ToList();
                            var file     = messageBodyAttaches.Where(x =>
                                                                     x.ContentType.MediaType == "image" ||
                                                                     x.ContentType.MediaType == "application").ToList();

                            if (file.Count > 0)
                            {
                                messageAttaches.AddRange(file);
                            }
                            string body;
                            var    isHtmlMime = false;
                            if (string.IsNullOrWhiteSpace(message.TextBody))
                            {
                                body       = message.HtmlBody;
                                isHtmlMime = true;
                            }
                            else
                            {
                                body = message.TextBody;
                            }
                            var date = message.Date;
                            if (date.Date >= DateTime.Now.Date)
                            {
                                if (!mailSave.IsExistsBdMail(message.MessageId))
                                {
                                    if (calendar.Count > 0)
                                    {
                                        var calendarVks = new CalendarVks();
                                        body = calendarVks.CalendarParser(calendar, message);
                                    }
                                    var address    = (MailboxAddress)message.From[0];
                                    var mailSender = address.Address;
                                    var nameFile   = date.ToString("dd.MM.yyyy_HH.mm.ss") + "_" + mailSender.Split('@')[0] + ".zip";
                                    var fullPath   = Path.Combine(parameters.PathSaveArchive, nameFile);
                                    MailLotusOutlookIn mailMessage = new MailLotusOutlookIn()
                                    {
                                        IdMail          = message.MessageId,
                                        MailAdressSend  = parameters.LoginOit,
                                        SubjectMail     = message.Subject,
                                        Body            = body,
                                        MailAdress      = mailSender,
                                        DateInputServer = date.DateTime,
                                        NameFile        = nameFile,
                                        FullPathFile    = fullPath,
                                        FileMail        = zip.StartZipArchive(messageAttaches, fullPath)
                                    };
                                    mailSave.AddModelMailIn(mailMessage);
                                    var mailUsers = mail.FindUserLotusMail(select.FindUserOnUserGroup(userSqlDefault, mailMessage.SubjectMail), "(OIT)");
                                    if (!string.IsNullOrWhiteSpace(message.HtmlBody))
                                    {
                                        var math = Regex.Match(body, @"CN=(.+)МНС");
                                        if (!string.IsNullOrWhiteSpace(math.Value))
                                        {
                                            mailUsers.Add(math.Value);
                                        }
                                    }
                                    if (isHtmlMime)
                                    {
                                        mail.SendMailMimeHtml(mailMessage, mailUsers);
                                    }
                                    else
                                    {
                                        mail.SendMailIn(mailMessage, mailUsers);
                                    }
                                    count++;
                                    Loggers.Log4NetLogger.Info(new Exception($"УН: {mailMessage.IdMail} Дата/Время: {date} От кого: {mailMessage.MailAdress}"));
                                }
                            }
                            else
                            {
                                //Удаление сообщения/письма
                                client.DeleteMessage(i);
                            }
                        }
                        mailSave.Dispose();
                        Loggers.Log4NetLogger.Info(new Exception("Количество пришедшей (OIT) почты:" + count));
                    }
                    mail.Dispose();
                    client.Disconnect(true);
                }
                //Очистить временную папку с файлами
                zip.DropAllFileToPath(parameters.PathSaveArchive);
                foreach (FileInfo file in new DirectoryInfo(parameters.PathSaveArchive).GetFiles())
                {
                    Loggers.Log4NetLogger.Info(new Exception($"Наименование удаленных файлов: {file.FullName}"));
                    file.Delete();
                }
                Loggers.Log4NetLogger.Info(new Exception("Очистили папку от файлов (OIT)!"));
                Loggers.Log4NetLogger.Info(new Exception("Перерыв 5 минут (OIT)"));
            }
            catch (Exception x)
            {
                Loggers.Log4NetLogger.Debug(x);
            }
        }
コード例 #4
0
ファイル: MailLogicLotus.cs プロジェクト: mathewsun/My
 /// <summary>
 /// Добавление документа
 /// </summary>
 /// <param name="mailIn">Принятое письмо с почты</param>
 public void AddModelMailIn(MailLotusOutlookIn mailIn)
 {
     Inventory.MailLotusOutlookIns.Add(mailIn);
     Inventory.SaveChanges();
     Loggers.Log4NetLogger.Info(new Exception("Сохранили письмо с УН " + mailIn.IdMail));
 }