Exemplo n.º 1
0
        public HttpResponseMessage Post()
        {
            var mailinfo = GetFromRequestBody <MailInfo>();

            if (mailinfo == null)
            {
                throw new Exception("MailInfo is null. Nothing to send.");
            }

            var mailHelper = new MailHelper();

            using (var mail = mailHelper.CreateMailSender())
            {
                mailHelper.SetFrom(mail, mailinfo.From);
                mailHelper.SetCredentials(mail);

                foreach (var p in mailinfo.To)
                {
                    mail.AddTo(p);
                }

                mail.SetSubject(mailinfo.Subject);
                mail.SetBody(mailinfo.Body, mailinfo.IsBodyHtml);

                if (mailinfo.AttachedFiles != null)
                {
                    foreach (var att in mailinfo.AttachedFiles)
                    {
                        mail.AddAttach(new MemoryStream(att.FileStream), att.Name);
                    }
                }

                mail.Send();
            }

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
Exemplo n.º 2
0
        public override void DoTask(EpsFastReport[] reports)
        {
            var mailHelper = new MailHelper();

            using (var mail = mailHelper.CreateMailSender())
            {
                var newLine = "\r\n\r\n";
                // обработка форматов тела письма
                if (Settings.Default.MailBodyFormat.Equals(MediaTypeNames.Text.Html))
                {
                    newLine = "<br><br>";
                }

                mailHelper.SetFrom(mail);
                mailHelper.SetCredentials(mail);

                var sendTo = GetAllParamValues <string>(EpsTaskParams.Email);
                foreach (var addrr in sendTo)
                {
                    mail.AddTo(addrr);
                }

                var asAttach = GetParamValue(EpsTaskParams.AsAttachment, defaultValue: 1) == 1;

                var sendBlankMail = GetParamValue(EpsTaskParams.SendBlankMail, defaultValue: 1) == 1;

                var fileFormat = GetParamValue <string>(EpsTaskParams.FileFormat);
                if (!string.IsNullOrEmpty(fileFormat))
                {
                    Sb.SetMacro("FileFormat", fileFormat);
                    var ext = EpsHelper.GetFileExtension(fileFormat);
                    if (ext != null)
                    {
                        Sb.SetMacro("FileExtension", ext);
                    }
                }

                var deleteSrcFile = FindByName(EpsTaskParams.MoveFile) != null &&
                                    FindByName(EpsTaskParams.CopyFile) == null;

                var fileMask = GetParamValue <string>(EpsTaskParams.FileMask);
                if (!string.IsNullOrEmpty(fileMask))
                {
                    FilePumper.AddSearchPattern(fileMask);
                }

                var sourceFolder = GetParamValue <string>(EpsTaskParams.SourceFolder);
                if (!string.IsNullOrEmpty(sourceFolder))
                {
                    FilePumper.SetSourcePath(sourceFolder);
                }

                FilePumper.SetDestinationMove(deleteSrcFile);

                var resultReportFileValue = string.Empty;
                if (FindByName(EpsTaskParams.ResultReportFile) != null)
                {
                    Sb.SetMacro("ResultReportFile", GetParamValue <string>(EpsTaskParams.ResultReportFile));
                }
                else
                {
                    if (reports != null)
                    {
                        foreach (var report in reports.Where(p => p != null))
                        {
                            resultReportFileValue += string.Format("{0}{1}",
                                                                   resultReportFileValue != string.Empty ? ";" : null, report.ReportName);
                        }
                    }
                    if (resultReportFileValue != string.Empty)
                    {
                        Sb.SetMacro("ResultReportFile", Sb.Substitute(resultReportFileValue));
                    }
                }

                // заполняем тему
                var mailSubject = ProcessSqlMacro(GetParamValue(EpsTaskParams.MailSubject, defaultValue: Settings.Default.MailSubject));
                mail.SetSubject(mailSubject);

                // Вызывать ProcessFiles только после обработки параметров задачи
                ProcessFiles(reports);
                if (Files.Count < 1)
                {
                    if (!sendBlankMail)
                    {
                        return; // не отсылаем почту
                    }
                }

                // заполняем тело
                var mailBody = ProcessSqlMacro(GetParamValue(EpsTaskParams.MailBody, defaultValue: Settings.Default.MailHeader));
                mail.SetBody(mailBody + newLine, true);

                // добавляем файлы
                foreach (var a in Files)
                {
                    if (asAttach)
                    {
                        mail.AddAttach(new MemoryStream(a.Data), a.FileName);
                    }
                    else
                    {
                        if (!Ziped) // не будем совать в тело zip файл
                        {
                            var s = new StreamReader(new MemoryStream(a.Data));
                            mail.AppendBody(s.ReadToEnd());
                            s.Close();
                        }
                    }
                }

                // ставим подпись
                var mailSignature = ProcessSqlMacro(GetParamValue(EpsTaskParams.MailSignature, defaultValue: Settings.Default.MailSignature));
                mail.AppendBody(newLine + mailSignature);

                // отправляем
                mail.Send();

                var logger = LogManager.GetLogger(GetType());
                logger.Info(string.Format("Mail '{0}' send to '{1}'.", mailSubject, string.Join(", ", sendTo)));
            }
        }