Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами / 7 сообщений из 7, страница 1 из 1
07.05.2014, 17:42
    #38635897
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами
День добрый,

не уверен в какую ветку, но пусть будет сюда.

нужна программа, которая сможет:
1) Подключаться к базе данных по расписанию и выполнять проверки. Желательно чтобы работа шла на C#.
2) По результатам проверки надо сделать отчет, создать тело сообщения в формате HTML и отправить сообщение(я) пользователям с Excel вложениями (сами отчеты).

Сейчас активно пользуюсь SQL Reporting Serivices. Но он не умеет создавать сообщения в HTML. Только чистый текст, а пользователи хотят видеть некую табличную информацию в самом сообщении + вложения.

Спасибо.
...
Рейтинг: 0 / 0
07.05.2014, 18:58
    #38635954
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами
ОБычный сервис либо задание по расписанию. У нас таких крутится с десяток - именно тело сообщения в формате HTML, плюс аттачи. Результат одного проверочного запроса+for xml+XSLT - тело отчета, результат другого проверочного запроса (далее в зависимости от) - аттач.
...
Рейтинг: 0 / 0
07.05.2014, 22:41
    #38636066
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами
Сон Веры Павловны,

А можете выложить пример создания тушки сообщения в формате HTML?
Я когда пробовал, подписка не выполнялась и глючила со страшной силой.
...
Рейтинг: 0 / 0
08.05.2014, 07:12
    #38636153
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами
Запрос:
Код: sql
1.
2.
3.
4.
select top 20 type_desc, name,
schema_name(schema_id) [schema],
convert(varchar, create_date, 104) created, is_ms_shipped
from sys.objects order by newid() for xml raw, root, type


Получаемый XML:
Код: xml
1.
2.
3.
4.
5.
6.
<root>
  <row type_desc="PRIMARY_KEY_CONSTRAINT" name="PK_UnitMeasure_UnitMeasureCode" schema="Production" created="29.03.2012" is_ms_shipped="0" />
  <row type_desc="INTERNAL_TABLE" name="xml_index_nodes_1509580416_256001" schema="sys" created="29.03.2012" is_ms_shipped="1" />
  <row type_desc="CHECK_CONSTRAINT" name="CK_SalesOrderHeader_ShipDate" schema="Sales" created="29.03.2012" is_ms_shipped="0" />
  <row type_desc="USER_TABLE" name="Employee" schema="HumanResources" created="29.03.2012" is_ms_shipped="0" />
....


XSLT
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" />
  <xsl:template match="/">
    <html>
      <head>
        <style type="text/css">
      p {
        font-family: Verdana;
        font-size: 10pt;
        margin: 3px;
      }
      td {
        font-family: Verdana;
        font-size: 10pt;
        margin: 3px;
        padding: 2px 10px;
      }
      td.bool {
        text-align: center;
        font-family: Arial;
        font-size: 14px;
        font-weight: bold;
      }
      h3 {
        font-family: Verdana;
        margin: 3px;
      }
      th {
        font-family: Verdana;
        font-size: 10pt;
        padding: 3px 10px;
        text-align: left;
        background-color: #E0E0E0;
        border-top: 2px solid #A0A0A0;
        border-bottom: 2px solid #A0A0A0;
      }
      table {
        border-collapse: collapse;
        border-bottom: 2px solid #A0A0A0;
      }
    </style>
      </head>
      <body>
        <h3>
          <xsl:text>Отчет о работе какого-то там сервиса</xsl:text>
        </h3>
        <p style="margin: 5px">
          <xsl:text>Время загрузки данных: </xsl:text>
          <xsl:value-of select="root/@from_date" />
        </p>
        <table>
          <tr>
            <th>Тип</th>
            <th>Имя</th>
            <th>Схема</th>
            <th>Создан</th>
            <th>Сист.</th>
          </tr>
          <xsl:for-each select="root/row">
            <tr>
              <td>
                <xsl:value-of select="@type_desc" />
              </td>
              <td>
                <xsl:value-of select="@name" />
              </td>
              <td>
                <xsl:value-of select="@schema" />
              </td>
              <td>
                <xsl:value-of select="@created" />
              </td>
              <td class="bool">
                <xsl:choose>
                  <xsl:when test="@is_ms_shipped=1">
                    <xsl:value-of select="'&#x221A;'" />
                  </xsl:when>
                </xsl:choose>
              </td>
            </tr>
          </xsl:for-each>
        </table>
        <p style="margin-top: 5px">Письмо автоматически сгенерировано каким-то сервисом. Отвечать на это письмо не нужно.</p>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>



Код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
var xd = new XmlDocument();
using (var cnn = new SqlConnection("Data Source=....;Initial Catalog=AdventureWorks2008R2;Integrated Security=True"))
using(var cmd = new SqlCommand(Properties.Resources.ReportQuery, cnn))
{
  cnn.Open();
  using(var rd = cmd.ExecuteReader())
    if (rd.Read() && !rd.IsDBNull(0))
      using(var xr = rd.GetSqlXml(0).CreateReader())
        xd.Load(xr);
}
xd.DocumentElement.SetAttribute("from_date", DateTime.Now.ToString("dd.MM.yyyy"));
var xslt = new XslCompiledTransform();
using(var sr = new StringReader(Properties.Resources.ReportTransform))
using(var xr = XmlReader.Create(sr))
  xslt.Load(xr);
var report = new StringBuilder();
using(var sw = new StringWriter(report))
using(var xw = XmlWriter.Create(sw))
  xslt.Transform(xd, null, xw);
using (
  var msg = new MailMessage
  {
    From = new MailAddress("SomeService.SE@mycompany.gov"),
    Subject = "Оповещение сервиса",
    IsBodyHtml = true,
    Body = report.ToString(),
  })
{
  msg.To.Add(new MailAddress("VasyaPupkin@mycompany.gov"));
  using (var mailer = new SmtpClient(
    Properties.Settings.Default.MailServer,
    Properties.Settings.Default.MailPort)
  {
    UseDefaultCredentials = true
  })
    mailer.Send(msg);
}


Результат:
...
Рейтинг: 0 / 0
08.05.2014, 10:57
    #38636362
thresher8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами
Сон Веры Павловны,

вы там чего, базуданных не версионируете?
...
Рейтинг: 0 / 0
08.05.2014, 11:24
    #38636431
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами
thresher8Сон Веры Павловны,
вы там чего, базуданных не версионируете?
Сон Веры Павловны
Код: c#
1.
2.
var xd = new XmlDocument();
using (var cnn = new SqlConnection("Data Source=....;Initial Catalog=AdventureWorks2008R2;Integrated Security=True"))
...
Рейтинг: 0 / 0
08.05.2014, 21:08
    #38637239
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами
Сон Веры Павловны,

ОК, спасибо большое.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Посоветуйте пожалуйста программульку для создания и авто рассылки писем с отчетами / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]