Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/163: Рейтинг темы: голосов - 163, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 12.01.2016
Сообщений: 77

Отправка email

19.01.2016, 13:58. Показов 33238. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Не знаю, как отправить на электронное сообщение человеку с помощью C#. А нужно следующее: человек вводит е-майл в textbox на который он хочет отправить сообщение, нажимает на кнопку Send, после чего сообщение отпровляется на указанную почту... Помогите
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2016, 13:58
Ответы с готовыми решениями:

Отправка SMS на email
Дорогие форумчане, помогите реализовать отправку смс из приложение на e-mail. Перепробывал массу кодов с нета, не чего не работает Вот...

Отправка текста из textbox на email
Всем привет! Хочу сделать отправку любого текста из textbox'a на мой e-mail. Отправка происходит по нажатию кнопки. Но чего я...

Отправка данных на email с двух TextBox
Как сделать отправку данных с 2-ух text box на email? Ниже код моей программы. using System; using System.Collections.Generic; ...

32
0 / 0 / 1
Регистрация: 07.04.2015
Сообщений: 49
27.01.2016, 21:45
Студворк — интернет-сервис помощи студентам
Даценд, теперь на это бросается)
Миниатюры
Отправка email  
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
27.01.2016, 22:00
theMANTIS,
Значит не тот класс исключения. Мне казалось, что нужно SmtpFailedRecipientException отлавливать, т.к. здесь именно ошибка в адресе получателя. Но как показал последний скрин, нужно ловить SmtpException:
C#
1
2
3
4
catch (SmtpException e)
{
   MessageBox.Show("По указанному адресу письмо отправить не удалось!");
}
0
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,139
Записей в блоге: 1
27.01.2016, 22:19
Цитата Сообщение от Даценд Посмотреть сообщение
Но как показал последний скрин, нужно ловить SmtpException:
слишком общее получается, на мой взгляд
The connection to the SMTP server failed.
-or-
Authentication failed.
-or-
The operation timed out.
-or-
EnableSsl is set to true but the DeliveryMethod property is set to SpecifiedPickupDirectory or PickupDirectoryFromIis.
-or-
EnableSsl is set to true, but the SMTP mail server did not advertise STARTTLS in the response to the EHLO command.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
27.01.2016, 22:30
Цитата Сообщение от NewOrdered Посмотреть сообщение
слишком общее получается
Зато легче поймать.
Да и вряд ли частные исключения как-то по особому должны здесь обрабатываться.
В этой ситуации можно даже просто Exception ловить и выдавать сообщение, что письмо не отправлено, проверьте данные и попробуйте еще раз.
0
0 / 0 / 1
Регистрация: 07.04.2015
Сообщений: 49
28.01.2016, 00:23
Даценд, самое прикольное, что сообщение сработало, когда отправил на несуществующий адрес. Письмо почему-то отправилось все же, так как уведобление об успешной отправки вышло все равно)) :
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
        static void SendMessage(string userName, string adressTo, string messageSubject, string messageText)
        {
            try
            {
                string from = @"post"; // адреса отправителя
                string pass = "pass"; // пароль отправителя
                MailMessage mess = new MailMessage();
                mess.To.Add(adressTo); // адрес получателя
                mess.From = new MailAddress(from);
                mess.Subject = messageSubject; // тема
                mess.Body = messageText; // текст сообщения
                SmtpClient client = new SmtpClient();
                client.Host = "smtp.mail.ru"; //smtp-сервер отправителя
                client.Port = 587;
                client.EnableSsl = true;
                client.Credentials = new NetworkCredential(from.Split('@')[0], pass);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Send(mess); // отправка пользователю
                mess.To.Remove(mess.To[0]);
                mess.To.Add(from); //для сообщения на свой адрес
                mess.Subject = "Отправлено сообщение";
                mess.Body = "Клиент " + userName + " произвел заказ.";
                client.Send(mess); // отправка себе
                mess.Dispose();
            }
            catch (SmtpException e)
            {
                MessageBox.Show("По указанному адресу письмо отправить не удалось!");
            }
        }
 
        bool IsValidEmail(string email)
        {
            Regex reg = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
            return reg.IsMatch(email);
        }
 
        public void button1_Click(object sender, EventArgs e)
        {
            {
 
                if ((textBox1.Text != String.Empty) && (textBox2.Text != String.Empty) && (maskedTextBox1.Text != String.Empty)) 
                {
                    if (IsValidEmail(textBox2.Text))
                    {
                    string userName = textBox1.Text + " " + maskedTextBox1.Text; //имя пользователя;
                    string adressTo = textBox2.Text; //адрес пользователя
                    string messageSubject = "Уважаемый клиент . Спасибо, что Вы выбрали именно нас!"; //тема
                    string messageText = "Вы успешно выполнили заказ."; //текст
                    SendMessage(userName, adressTo, messageSubject, messageText);
                    MessageBox.Show("Вы успешно выполнили заказ, приложение будет закрыто.", "Завершение заказа", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                    Application.Exit();
                    }
                    else
                        label9.ForeColor = Color.Red; 
                        MessageBox.Show("E-Mail адрес введен некорректно! ", "Внимание! Некорректен e-mail!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                
                
                }
                else
                {
                    MessageBox.Show("Вы не заполнили обязательные поля, помеченные звездочкой!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
 
            }
            
        }
В этом катче выделят зелененьким букву И (e) и то что она не используется.
C#
1
2
3
4
            catch (SmtpException e)
            {
                MessageBox.Show("По указанному адресу письмо отправить не удалось!");
            }
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.01.2016, 00:38
C#
1
2
3
4
catch (SmtpException ex)
{
    MessageBox.Show("По указанному адресу письмо отправить не удалось! Причина: " + ex.Message);
}
0
0 / 0 / 1
Регистрация: 07.04.2015
Сообщений: 49
28.01.2016, 00:57
Даценд, Вот как получается: Нажимаю отправить и вылетает окошко (как и нужно). Потом вылезает окно, при котором оно отправляется. Я понял, что оно отправляется и возвращает с сервера ответ об ошибке, а вот тогда придется сделать, чтобы не закрывалось окно.. похоже, не получится по другому.
Миниатюры
Отправка email   Отправка email  
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.01.2016, 01:14
Меняем тип метода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static bool SendMessage(string userName, string adressTo, string messageSubject, string messageText)
{
   try
   {
      //...
     mess.Dispose();
     return true;
   }
   catch (SmtpException ex)
   {
      MessageBox.Show("По указанному адресу письмо отправить не удалось! Причина: " + ex.Message);
      return false;
   }
}
При вызове:
C#
1
2
3
4
5
6
7
8
9
10
if (SendMessage(userName, adressTo, messageSubject, messageText))
{
    MessageBox.Show("Вы успешно выполнили заказ, приложение будет закрыто.", "Завершение заказа", MessageBoxButtons.OK, MessageBoxIcon.Information);
    this.Close();
    //...
}
else
{
    MessageBox.Show("Ашипка!");
}
0
0 / 0 / 1
Регистрация: 07.04.2015
Сообщений: 49
28.01.2016, 01:31
Даценд, вот весь огроменный код, я его урезал просто для восприятия. И я уже всунул туда ретёрн, его отладчик красным выделяет.
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
        static void SendMessage(string userName, string adressTo, string messageSubject, string messageText)
        {
            try
            {
                string from = @"post"; // адреса отправителя
                string pass = "pass"; // пароль отправителя
                MailMessage mess = new MailMessage();
                mess.To.Add(adressTo); // адрес получателя
                mess.From = new MailAddress(from);
                mess.Subject = messageSubject; // тема
                mess.Body = messageText; // текст сообщения
                SmtpClient client = new SmtpClient();
                client.Host = "smtp.mail.ru"; //smtp-сервер отправителя
                client.Port = 587;
                client.EnableSsl = true;
                client.Credentials = new NetworkCredential(from.Split('@')[0], pass);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Send(mess); // отправка пользователю
                mess.To.Remove(mess.To[0]);
                mess.To.Add(from); //для сообщения на свой адрес
                mess.Subject = "Отправлено сообщение";
                mess.Body = "Клиент " + userName + " произвел заказ. Ожидает ответа. Тело сообщения клиента: " + messageText;
                client.Send(mess); // отправка себе
                mess.Dispose();
                return true;
            }
            catch (SmtpException ex)
            {
                MessageBox.Show("По указанному адресу письмо отправить не удалось! Причина: " + ex.Message);
                return false;
            }
        }
 
        bool IsValidEmail(string email)
        {
            Regex reg = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
            return reg.IsMatch(email);
        }
 
        public void button1_Click(object sender, EventArgs e)
        {
            {
 
                if ((textBox1.Text != String.Empty) && (textBox2.Text != String.Empty) && (maskedTextBox1.Text != String.Empty)) 
                {
                    if (IsValidEmail(textBox2.Text))
                    {
                        string userName = textBox1.Text + " " + maskedTextBox1.Text; //имя пользователя;
                        string adressTo = textBox2.Text; //адрес пользователя
                        string messageSubject = "Уважаемый клиент " + userName + ". Спасибо, что Вы выбрали именно нас!" + textBox3.Text; //тема
                        string messageText = "Вы успешно выполнили заказ на покупку " + textBox4.Text + " (сумма с учетом доставки). В ближайшее время с Вами свяжется наш менеджер по телефону."; //текст
                        SendMessage(userName, adressTo, messageSubject, messageText);
                        MessageBox.Show("Вы успешно выполнили заказ, " + textBox1.Text + " Вы можете заказать еще раз или дождитесь, пожалуйста, нашего менеджера. Он скоро Вам перезвонит.", "Завершение заказа", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    else
                    {
                        label9.ForeColor = Color.Red;
                        MessageBox.Show("E-Mail адрес введен некорректно! Введите, пожалуйста, по примеру, выделенным красным справа от поля E-mail.", "Внимание! Некорректен e-mail!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                
                }
                else
                {
                    MessageBox.Show("Вы не заполнили обязательные поля, помеченные звездочкой!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
 
            }
            
        }
Миниатюры
Отправка email  
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.01.2016, 08:52
theMANTIS,
не
Цитата Сообщение от theMANTIS Посмотреть сообщение
static void SendMessage
а
Цитата Сообщение от Даценд Посмотреть сообщение
static bool SendMessage
0
0 / 0 / 1
Регистрация: 07.04.2015
Сообщений: 49
29.01.2016, 17:12
Даценд, почему-то не находит в данном контексте)
Весь кодик
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
        public void button1_Click(object sender, EventArgs e)
        {
            {
 
                if ((textBox1.Text != String.Empty) && (textBox2.Text != String.Empty) && (maskedTextBox1.Text != String.Empty)) 
                {
                    if (IsValidEmail(textBox2.Text))
                    {
                        if (SendMessage(userName, adressTo, messageSubject, messageText))
                        {
                        string userName = textBox1.Text + " " + maskedTextBox1.Text; //имя пользователя;
                        string adressTo = textBox2.Text; //адрес пользователя
                        string messageSubject = "Уважаемый клиент " + userName + ". Спасибо, что Вы выбрали именно нас!" + textBox3.Text; //тема
                        string messageText = "Вы успешно выполнили заказ на покупку " + textBox4.Text + " (сумма с учетом доставки). В ближайшее время с Вами свяжется наш менеджер по телефону."; //текст
                        SendMessage(userName, adressTo, messageSubject, messageText);
                        MessageBox.Show("Вы успешно выполнили заказ, " + textBox1.Text + " Вы можете заказать еще раз или дождитесь, пожалуйста, нашего менеджера. Он скоро Вам перезвонит.", "Завершение заказа", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                        }
                        else
                        {
                            MessageBox.Show("Ашипка!");
                        }
                    }
                    else
                    {
                        label9.ForeColor = Color.Red;
                        MessageBox.Show("E-Mail адрес введен некорректно! Введите, пожалуйста, по примеру, выделенным красным справа от поля E-mail.", "Внимание! Некорректен e-mail!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                
                }
                else
                {
                    MessageBox.Show("Вы не заполнили обязательные поля, помеченные звездочкой!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
 
            }
            
        }
Миниатюры
Отправка email  
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
29.01.2016, 17:35
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (IsValidEmail(textBox2.Text))
{
    string userName = textBox1.Text + " " + maskedTextBox1.Text; //имя пользователя;
    string adressTo = textBox2.Text; //адрес пользователя
    string messageSubject = "Уважаемый клиент " + userName + ". Спасибо, что Вы выбрали именно нас!" + textBox3.Text; //тема
    string messageText = "Вы успешно выполнили заказ на покупку " + textBox4.Text + " (сумма с учетом доставки). В ближайшее время с Вами свяжется наш менеджер по телефону."; //текст
    if (SendMessage(userName, adressTo, messageSubject, messageText))
    {
        MessageBox.Show("Вы успешно выполнили заказ, " + textBox1.Text + " Вы можете заказать еще раз или дождитесь, пожалуйста, нашего менеджера. Он скоро Вам перезвонит.", "Завершение заказа", MessageBoxButtons.OK, MessageBoxIcon.Information);
        this.Close();
    }
    else
    {
        MessageBox.Show("Ашипка!");
    }
}
else
{
    label9.ForeColor = Color.Red;
    MessageBox.Show("E-Mail адрес введен некорректно! Введите, пожалуйста, по примеру, выделенным красным справа от поля E-mail.", "Внимание! Некорректен e-mail!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
1
0 / 0 / 1
Регистрация: 07.04.2015
Сообщений: 49
29.01.2016, 18:12
Даценд, все получилось, спасибо Вам огромное)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2016, 18:12

Начало записи с микрофона на 10 секунд при получении команды из COM и отправка на Email
Всем привет! Делаю демонстрационное "устройство" на учебу, которое ждет, когда в помещении появится какой-то звук, при его появлении...

Отправка email
Проблема в следующем не работает отправка прикрепленных файлов формата .rar, остальных работает именно .rar нет! Кто-нибудь сталкивался?...

Отправка Email
Всем доброго времени суток. У меня такой вопрос, не получается отправить Email при помощи программы написанной на C#, выкидывает в...

Отправка письма по email
Привет ребята , мне бы хотелось отправлять письмо по email но этот код не работает SmtpClient client = new SmtpClient(); ...

Отправка писма на email
SmtpClient Smtp = new SmtpClient("smtp.yandex.ru", 25); Smtp.Credentials = new NetworkCredential("xxxxxxxx",...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru