Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 1
Регистрация: 12.02.2012
Сообщений: 18

Отправка почты по Smtp с вложением по данным из БД

12.09.2012, 08:48. Показов 4213. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день товарищи. Начал недавно изучать C# по этому просьба особо не ругать. Дело в следующем заключается. Нужно организовать отправку почты по Smtp протоколу:

- должны браться параметры Smtp-подключения из БД (MsSQL)

- должно отправляться письмо в html-формате.

- в письме должна быть вложена картинка (не вложенный файл, а картинка в тексте – т.е. «embedded» )

В БД соответствующие поля с настройками есть. Ниже код отправки почты ну пока настройки заданы прамо в коде, как сделать что бы настройки брались соответствено из БД. А еще с вложениями не разберусь пока (картинка в тексте «embedded»).


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
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
 
 
 
namespace SendMailApplication
{
    class Program
    {
 
        static public void SendMailToClient()
        {
            try
            {
                SmtpConnectionAndMessageBody("smtp.mail.ru", 587, "Логин", "пароль",
                    "E-mail@mail.ru", "E-mail получателя", "test1.txt");
 
                Console.WriteLine("Сообщение отправлено");
                Console.ReadKey();
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
        static public void SmtpConnectionAndMessageBody(string aSmtpHost, int aSmtpPort, string aSmtpLogin, string aSmtpPass, string aMailAddressFrom, string aMailAddressTo, string aFile)
        {
            try
            {
 
                //Создание Smtp соединения и настройка параметров отправки почты
                SmtpClient Smtp = new SmtpClient(aSmtpHost, aSmtpPort);
                Smtp.Credentials = new NetworkCredential(aSmtpLogin, aSmtpPass);
                Smtp.EnableSsl = true;
 
                //Формирование письма
                MailMessage Message = new MailMessage();
                Message.From = new MailAddress(aMailAddressFrom);
                Message.To.Add(new MailAddress(aMailAddressTo));
                Message.Subject = "Тестовое письмо!";
                Message.Body = "Заработало!";
                Message.SubjectEncoding = Encoding.GetEncoding(65001);
                Message.BodyEncoding = Encoding.GetEncoding(65001);
                Message.IsBodyHtml = true;
 
                //Прикрепляем файл
                string file = aFile;
                Attachment attach = new Attachment(file, MediaTypeNames.Application.Octet);
 
                Message.Attachments.Add(attach);
 
                //отправка письма
                Smtp.Send(Message);
 
            }
 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
        }
 
        static void Main ()
        {
            SendMailToClient();      
        }
    }
}
Буду благодарен любой помощи!

Добавлено через 14 часов 32 минуты
Ну что никто не может помочь?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.09.2012, 08:48
Ответы с готовыми решениями:

Отправка письма с вложением на почту SMTP
Добрый день. Просьба помочь со следующей проблемой: <?php function show_form() { ?> <form action=""...

Отправка писем с вложением через smtp протокол
Есть следующий код:int bmpsize (char* name) { FILE* f = fopen (name, "rb"); int i = 0; for (; fgetc (f) != EOF; i++) {} ...

Отправка почты с вложением
Написал скрипт отправки почти с вложением через фукнцию mail(); Залил на сервер, все работает. Только когда пытаюсь отправить...

4
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
12.09.2012, 09:20
Чтобы настроики брались из базы данных вам надо немножко почитать sql запросы, sqllink и ado.net
Обьявляете переменные, считываете в них из нужной таблицы вашеи базы нужные данные. Все. На форуме ado.net есть много примеров-запросов. Конкретнее сказать сложно, т.к. надо знать структуру вашй базы. Удачи!
0
0 / 0 / 1
Регистрация: 12.02.2012
Сообщений: 18
12.09.2012, 13:32  [ТС]
Цитата Сообщение от iva_a Посмотреть сообщение
Чтобы настроики брались из базы данных вам надо немножко почитать sql запросы, sqllink и ado.net
Обьявляете переменные, считываете в них из нужной таблицы вашеи базы нужные данные. Все. На форуме ado.net есть много примеров-запросов. Конкретнее сказать сложно, т.к. надо знать структуру вашй базы. Удачи!
А не могли б вы хоть примерно показать как создать подключение и вытащить настройки Smtp из БД вот к примеру запрос который достает соответствующие поля:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
SELECT 
  
  HOTEL_EMAIL,
  
  SMTP_SERVER,
  SMTP_PORT,
  SMTP_LOGIN,
  SMTP_PASSWORD,
  
  SMTP_USE_SSL
FROM 
  dbo.SPRAV_HOTEL ;
А то сроки поджимают.
0
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
12.09.2012, 14:05
С MsSQL не работала, а k SQL Server подключалась так как-то. В app.config писала секцию
C#
1
2
3
 <connectionStrings>
 <add name="MyConnectionString" connectionString="Connection Timeout=120;Data Source=.;Initial Catalog=Вашкаталог;Integrated Security=True" providerName="System.Data.SqlClient" /]>
</connectionStrings>
- это если SQL Server Express Потом считывала это значение
Посмотрите конкретнее в гугле
Ну а потом как-то так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  SqlConnection connection = new SqlConnection(ConnectionString);
            connection.Open();
            try
            {
                SqlCommand command = connection.CreateCommand();
                 command.CommandText = @"SELECT [Имя базы].dbo.ИмяТаблицы.HOTEL_EMAIL,...//перчисляете что вам там нужно
                    FROM [Имя базы].dbo.ИмяТаблицы
                command.ExecuteNonQuery();                         }
            catch (SqlException ex)
            {                {
              //здесь желательно в какои-нибудь лог файл записать, если ошибка
 
            }
            finally
            {
                connection.Close(); //закрываете соединение
 
            }
1
0 / 0 / 1
Регистрация: 12.02.2012
Сообщений: 18
12.09.2012, 22:12  [ТС]
Спасибо! Буду пробывать.

Добавлено через 7 часов 14 минут
Сделал запрос к БД, вытащил данные и отбразил в консоли. Как мне теперь эти данные в переменные упаковать, для дальнейшего использования?

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
static void CreateSqlConnection()
        {
            using (SqlConnection cnn = new SqlConnection())
            {
                cnn.ConnectionString = 
                @"Server=server; Trusted_Connection=no; Database=DB; 
                user id=login; password=pass; connection timeout=30";
                cnn.Open();
 
                string cm = @"SELECT HOTEL_EMAIL, SMTP_SERVER, SMTP_PORT, SMTP_LOGIN,    SMTP_PASSWORD, SMTP_USE_SSL FROM dbo.SPRAV_HOTEL";
                SqlCommand SmtpPropertiesSQL = new SqlCommand(cm, cnn);
 
                using (SqlDataReader SmtpDataReader = SmtpPropertiesSQL.ExecuteReader())
                {
                    while (SmtpDataReader.Read())
                    {
                        Console.WriteLine("SMTP_SERVER: {0}, SMTP_PORT: {1}, SMTP_LOGIN: {2},       SMTP_PASSWORD: {3}, SMTP_USE_SSL: {4}, HOTEL_EMAIL: {5}",
                            SmtpDataReader["SMTP_SERVER"].ToString().Trim(),
                            SmtpDataReader["SMTP_PORT"].ToString().Trim(),
                            SmtpDataReader["SMTP_LOGIN"].ToString().Trim(),
                            SmtpDataReader["SMTP_PASSWORD"].ToString().Trim(),
                            SmtpDataReader["SMTP_USE_SSL"].ToString().Trim(),
                            SmtpDataReader["HOTEL_EMAIL"].ToString().Trim());
                    }
 
                }
 
                cnn.Close();
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.09.2012, 22:12
Помогаю со студенческими работами здесь

Отправка почты с вложением
Приветствую, коллеги! Стыдно создавать такие темы для старика, знаю :D Но в гугле все ссылки сиреневые, а воз и ныне там. ...

Отправка почты с вложением
Есть необходимость выполнить отправку сообщения с прикрепленным файлом. Скрипт отправки расположен на хостинге в виде PHP. В HTML...

Массовая отправка сообщений с вложением через SMTP сервер
Всем привет. Ребят, подскажите пожалуйста, в чем ошибка? Есть самописные форма и обработчик формы для массовой отправки почты с вложением....

Отправка из приложения сообщений электронной почты с вложением
Здравствуйте. Хотелось бы спросить, как можно реализовать отправку сообщений электронной почты прямо из приложения. Ну что-то типа...

Отправка почты по Smtp
Добрый день. Помогите решить проблему: имеется сервер Domino 5.0.10 (рус.) (Windows 2000 Server), установлен он на компьютере который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru