コード例 #1
0
    static void sendMail(tProgramData programData, string body)
    {
        if ((programData.smtpServer != "") && (programData.userName != "") && (programData.password != ""))
        {
            string[] w      = programData.smtpServer.Split(new char[] { ':' });
            int      port   = 25;
            string   server = w[0];
            if (w.Count() > 1)
            {
                int.TryParse(w[1], out port);
            }

            log("Отправка письма: ");
            log("Сервер: " + server);
            log("Порт: " + port);
            log("Пользователь: " + programData.userName);
            log("Получатель: " + programData.mailto);
            log("Тема: " + programData.subject);
            log("Письмо: " + body);

            using (MailMessage mm = new MailMessage(programData.userName, programData.mailto))
            {
                mm.Subject    = programData.subject;
                mm.Body       = body;
                mm.IsBodyHtml = false;

                SmtpClient sc = new SmtpClient(server, port);
                sc.EnableSsl             = true;
                sc.DeliveryMethod        = SmtpDeliveryMethod.Network;
                sc.UseDefaultCredentials = false;
                sc.Credentials           = new NetworkCredential(programData.userName, programData.password);
                sc.Send(mm);
            }
        }
    }
コード例 #2
0
    static void Main(string[] args)
    {
        tProgramData programData = new tProgramData();
        cParam       param       = new cParam();

        ParseParam(args, param, programData);

        // Проверяем путь
        if (!Directory.Exists(programData.pathBackup))
        {
            sendMail(programData, string.Format(strErrorNotFoundPath, programData.pathBackup));
        }
        else
        {
            List <tDataFile> fileList = new List <tDataFile>();

            string[] files = Directory.GetFiles(programData.pathBackup).OrderByDescending(x => new FileInfo(x).CreationTime).ToArray();
            foreach (string file in files)
            {
                fileList.Add(new tDataFile(file, Directory.GetCreationTime(file)));
            }

            int c = fileList.Count();
            if (c == 0)
            {
                // Нет файлов в контролируемом каталоге
                sendMail(programData, strInfoNotArchiv);
            }
            else
            {
                tDataFile dataFile1 = fileList[0];

                if (dataFile1.dateCreate <= DateTime.Today)
                {
                    // Последний архив меньше сегодняшенго дня
                    sendMail(programData, string.Format(strInfoOldArсhiv, dataFile1.dateCreate));
                }
                else
                {
                    if (c > 1)
                    {
                        tDataFile dataFile2 = fileList[1];
                        long      lenFile1  = new FileInfo(dataFile1.name).Length;
                        long      lenFile2  = new FileInfo(dataFile2.name).Length;
                        if (lenFile1 < lenFile2)
                        {
                            // Размер нового архива меньше чем старого
                            sendMail(programData, string.Format(strInfoSizeNewArchivSmaller, lenFile1, dataFile1.name, lenFile2, dataFile2.name));
                        }
                    }
                }
            }
        }
    }
コード例 #3
0
    // Загрузка данные из ini файла
    static void loadFromIni(string[] args, cParam param, tProgramData programData)
    {
        IniFiles ini           = new IniFiles("param.ini");
        string   iniSection    = "Основные настройки";
        string   iniSmtpServer = "smtpserver";
        string   iniUsername   = "******";
        string   iniPassword   = "******";
        string   iniMailto     = "mailto";
        string   iniSubject    = "subject";
        string   iniPathbackup = "pathbackup";

        if (args.Count() == 0)
        {
            // Создадим INI файл с настройками
            ini.Write(iniSection, iniSmtpServer, "");
            ini.Write(iniSection, iniUsername, "");
            ini.Write(iniSection, iniPassword, "");
            ini.Write(iniSection, iniMailto, "");
            ini.Write(iniSection, iniSubject, "");
            ini.Write(iniSection, iniPathbackup, "");

            Console.WriteLine("17/08/2018 [email protected]");
            Console.WriteLine("Программа контроля создания архивов.");
            Console.WriteLine("При запуске с параметрами контролирует каталог из параметра -pb");
            Console.WriteLine("Если в каталоге сегодня не было свежего файла, значит архив не сделан");
            Console.WriteLine("отправляет письмо на почту. Также если размер архива меньше чем прошлый");
            Console.WriteLine("то также отправляет письмо на почту.");
            Console.WriteLine("Парамтеры: ");
            foreach (cParamData item in param)
            {
                Console.WriteLine("\t{0}  {1}", item.command, item.descript);
            }
        }

        // Если в параметрах указано что брать данные из файла настроек, то
        // попробует получить из него данные

        if (param.Get("-f").data != "")
        {
            // читаем данные из файла
            programData.smtpServer = ini.Read(iniSection, iniSmtpServer);
            programData.userName   = ini.Read(iniSection, iniUsername);
            programData.password   = ini.Read(iniSection, iniPassword);
            programData.mailto     = ini.Read(iniSection, iniMailto);
            programData.subject    = ini.Read(iniSection, iniSubject);
            programData.pathBackup = ini.Read(iniSection, iniPathbackup);
        }
    }
コード例 #4
0
    static void ParseParam(string[] args, cParam param, tProgramData programData)
    {
        param.Add("-f", tParamData.tBoll, "", "Если указан, то настройки берутся из param.ini файла. Файл с пустыми настройками создан.");
        param.Add("-s", tParamData.tString, "smtp.yandex.ru:25", "адрес smtp сервера, например smtp.yandex.ru");
        param.Add("-u", tParamData.tString, "", "почта под который делать отправку писем");
        param.Add("-p", tParamData.tString, "", "пароль");
        param.Add("-t", tParamData.tString, "", "адрес почты на который нужно отправлять письма, например [email protected]");
        param.Add("-su", tParamData.tString, "", "тема письма");
        param.Add("-pb", tParamData.tString, "", "контролируемый каталог с архивами");
        param.Parse(args);

        programData.smtpServer = param.Get("-s").data;
        programData.userName   = param.Get("-u").data;
        programData.password   = param.Get("-p").data;
        programData.mailto     = param.Get("-t").data;
        programData.subject    = param.Get("-su").data;
        programData.pathBackup = param.Get("-pb").data;

        loadFromIni(args, param, programData);
    }