Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/41: Рейтинг темы: голосов - 41, средняя оценка - 4.88
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

Отправка писем на E-mail не работает

12.12.2016, 08:00. Показов 8024. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.
Исследуя раздел форума "Готовые решения, полезные коды" наткнулся на задачу, которую давно хотел осуществить.
Отправлять почту по нажатию кнопки в приложении.
Пост: Готовые решения и полезные коды на Visual Basic .NET (Часть-1)
Приложение сообщает, что сообщение не отправлено (вложения не прикреплял).
Вот мой код кнопки:
VB.NET
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
#Region "Отправка сообщения"
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim EMail As New MailMessage
        Dim Smtp As SmtpClient
        Dim Drop() As String = Split(Files, "[SP]")
        Smtp = New SmtpClient("smtp.yandex.ru")
        Smtp.Port = 465 '587 попробовал менять, перед выдачей сообщения о неудаче увеличивается задержка, и только
        Smtp.Credentials = New Net.NetworkCredential("dikrk3@yandex.ru", "пароль ввожу правильно") 'Данные Вашей почты (отправителя)
        EMail.From = New MailAddress("dikrk3@yandex.ru", Subject.Text) ' Subject.Text здесь для красоты, по желанию можно убрать
        EMail.To.Add(New MailAddress("jkrnd@yandex.ru")) 'кому
        EMail.Body = Message.Text 'Основной текст
        EMail.Subject = Subject.Text 'Тема письма
        If Num > 0 Then
            For N = 0 To Num - 1
                EMail.Attachments.Add(New System.Net.Mail.Attachment(Drop(N)))
            Next
        End If
        Try
            Smtp.Send(EMail)
            MsgBox("Ваше сообщение отправлено. Спасибо!", MsgBoxStyle.Information)
        Catch ex As Exception
            MsgBox("Ваше сообщение не было отправлено. Пожалуйста, повторите попытку", MsgBoxStyle.Critical)
        End Try
        Me.Close()
    End Sub
#End Region
В принципе, мне нужно отправлять только один вложенный xls-файл (передача сведений диспетчеру). Сечас пользуемся сервисом Yandex. The Bat! и ThunderBird не работают - в корпорации свои правила. Идеальным был бы именно вариант "по кнопке" предложенный AeroWhite
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2016, 08:00
Ответы с готовыми решениями:

отправка писем на e-mail
Здравствуйте, как можно отправить текстовое значение на e-mail (кодбехайнд на C#) и можно ли отправить письмо не указав smtp-сервер? (как...

Отправка писем по E-Mail
Получаю такой текст ошибки: Сервер отклонил один или несколько адресов получателей. Отклик сервера: 450 4.7.1 Client host rejected:...

Отправка писем на mail.ru из стороннего файла
Как из файла php отправить электронное письмо на сайте joomla. Сервер - локальный.

23
222 / 175 / 73
Регистрация: 05.11.2015
Сообщений: 533
12.12.2016, 09:41
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

jkrnd, я вот так вот отправляю, у меня все работает!! тестил неоднократно.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Imports System.Net.Mail
Imports System.Text
Public Class Form3
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim email As New MailMessage
        Dim smtp As SmtpClient
        smtp = New SmtpClient("smtp.mail.ru") ' Пример smtp.mail.ru
        smtp.Credentials = New Net.NetworkCredential("IvanovES@mail.ru", "password1")
        email.From = New MailAddress("IvanovES@mail.ru")
        email.To.Add(New MailAddress("PetrovKN@mail.ru"))
        email.Body = "test_вложения"
        email.Subject = "test_вложения"
        email.Attachments.Add(New System.Net.Mail.Attachment("d:\rasp_p04ta\2.xls"))
        smtp.Send(email)
    End Sub
End Class
1
1728 / 1594 / 166
Регистрация: 25.07.2015
Сообщений: 2,671
12.12.2016, 11:09
jkrnd, подобные проблемы не так давно наблюдались у Памирыча
Отправка почты с вложением
Решил он их или нет - не знаю.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
12.12.2016, 12:43
Kulma, не решил
Организовал своеобразный сервер, на который который попадает корреспонденция от юзеров, а он уже отправляет.
1
1728 / 1594 / 166
Регистрация: 25.07.2015
Сообщений: 2,671
12.12.2016, 14:28
Цитата Сообщение от Памирыч Посмотреть сообщение
Организовал своеобразный сервер
Затейливо
А саппорт яндексовый что вещает по этому поводу ?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
12.12.2016, 14:34
Kulma, да не, просто сетевой комп с самой обычной отправкой на Win7
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
12.12.2016, 14:44  [ТС]
bd_13, Сбой при отправке сообщения электронной почты. в строке 15
вообще то ваш код такой же, коме того что не указывается Smtp.Port = 465
0
222 / 175 / 73
Регистрация: 05.11.2015
Сообщений: 533
12.12.2016, 14:49
jkrnd, я привел, ровно то, что у меня работает.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
12.12.2016, 14:55
jkrnd, если у Вас XP, то такая особенность уже норма
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
12.12.2016, 15:26  [ТС]
bd_13, попробовал проделать то же с mail.ru ящиками, получил:
Почтовый ящик недоступен. Отклик сервера: SMTP is available only with SSL or TLS connection enabled.

Добавлено через 1 минуту
Цитата Сообщение от Памирыч Посмотреть сообщение
если у Вас XP
У меня Win8.1, на работе XP, но там я ещё даже не пробовал ничего.

Добавлено через 12 минут
Свершилось Зарэмил строку Smtp.Port = и всё отправилось (я про Yandex).

Добавлено через 15 минут
ещё пришлось добавить Smtp.EnableSsl = True
понятия не имею что это, но без него не отправляется нечего.
0
1728 / 1594 / 166
Регистрация: 25.07.2015
Сообщений: 2,671
12.12.2016, 18:20
Цитата Сообщение от jkrnd Посмотреть сообщение
ещё пришлось добавить Smtp.EnableSsl = True
понятия не имею что это, но без него не отправляется нечего.
Защищённый протокол
SSL
Цитата Сообщение от jkrnd Посмотреть сообщение
Зарэмил строку Smtp.Port = и всё отправилось (я про Yandex).
хм...всё чуднЕе и чуднЕе
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
12.12.2016, 18:35  [ТС]
всё работает на 5+. завтра на работе проверю на ХP.
0
1728 / 1594 / 166
Регистрация: 25.07.2015
Сообщений: 2,671
12.12.2016, 19:08
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

В общем заинтриговали - погуглил и вот что получается
(jkrnd, воспользовался вашим кодом)
Ось W7x64
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim EMail As New MailMessage
        Dim Smtp As SmtpClient
 
        Smtp = New SmtpClient("smtp.yandex.ru")
        Smtp.EnableSsl = True
        Smtp.Port = 25 'попробовал менять, перед выдачей сообщения о неудаче увеличивается задержка, и только
        Smtp.Credentials = New Net.NetworkCredential("бла-бла@yandex.ru", "бла-бла") 'Данные Вашей почты (отправителя)
        EMail.From = New MailAddress("бла-бла@yandex.ru") ' Subject.Text здесь для красоты, по желанию можно убрать
        EMail.To.Add(New MailAddress("бла-бла@gt-parts.ru")) 'кому
        EMail.Body = "Тест" 'Основной текст
        EMail.Subject = "Тест" 'Тема письма
        
        Try
            Smtp.Send(EMail)
            MsgBox("Ваше сообщение отправлено. Спасибо!", MsgBoxStyle.Information)
        Catch ex As Exception
            MsgBox("Ваше сообщение не было отправлено. Пожалуйста, повторите попытку", MsgBoxStyle.Critical)
        End Try
        Me.Close()
    End Sub
Результат следующий:
-без защищённого соединения SSL вообще никуда ничего не отправляется
-на 465 порту , не знаю у кого как, у меня прога виснет.
-на 25 и 587 портах с включённым SSL почта уходит нормально
- с отключенными портами и включённым SSL тоже всё отрабатывает, что для меня на самом деле странно,
очевидно перешли на какие-то внутренние порты, хотя во всех мануалах указан именно 465+SSL
Вот как-то так

Добавлено через 5 минут
А , ну мы не одиноки и проблема не сегодняшняя ))
На харбаре статейка по этому поводу имеется (сорри, не знаю во что обернуть)

"Если вы используете Яндекс.Почту для домена, то скорее всего уже знаете что неделю назад с 16 сентября 2014 г. SMTP сервер Яндекса smtp.yandex.ru полностью перешел на SSL, о чем компания добросовестно уведомила клиентов (говорю безо всякого сарказма, действительно сработали добросовестно). В почтовой рассылке были приведены инструкции для популярных почтовых клиентов о том, какие изменения в них необходимо произвести, чтобы почта работала после перехода на SSL: Шифрование передаваемых данных. Если кратко, то в настройках SMTP надо указать порт 465 и включить опцию шифрование SSL. Однако, если у вас есть свое .Net приложение, в котором для отправления почты используется стандартный класс System.Net.Mail.SmtpClient, то при попытке использовать эти инструкции возникнет исключение с сообщением о превышении времени ожидания.

Прочитав приведенные выше инструкции, мы могли бы ожидать, что следующий код отработает без проблем:
var msg = new MailMessage(from, to, subj, body);
var smtpClient = new SmtpClient("smtp.yandex.ru", 465);
smtpClient.Credentials = new NetworkCredential(username, pwd);
smtpClient.EnableSsl = true;
smtpClient.Send(msg);

Однако, как было отмечено выше, при попытке послать письмо генерируется исключение. Чтобы код работал, по-прежнему нужно использовать стандартный SMTP порт 25, как для незащищенных соединений, но указав при этом EnableSsl = true:
var msg = new MailMessage(from, to, subj, body);
var smtpClient = new SmtpClient("smtp.yandex.ru", 25);
smtpClient.Credentials = new NetworkCredential(username, pwd);
smtpClient.EnableSsl = true;
smtpClient.Send(msg);

Возможно, это обусловлено реализацией режима явного SSL (explicit SSL) в SmtpClient, когда соединение устанавливается через 25 порт в незашифрованном виде, а затем переключается в защищенный режим. Тем не менее, т.к. решение неочевидное, решил опубликовать его, чтобы сэкономить время тем, кто столкнется с этой проблемой."
4
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
12.12.2016, 19:22
Kulma, инфа полезная, спасибо)
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
12.12.2016, 19:31  [ТС]
Kulma, Спасибо
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
13.12.2016, 17:44  [ТС]
Попробовал отправлять с XP на работе. Долго думает, затем сообщает что время ожидания истекло и письмо не отправлено. Либо из под XP этот код не работает, либо, и это скорее всего, мешает настройка интернета через прокси сервер. Прилагаю скрин с настройками моей сети на работе. Кто знает - подскажите, как отправлять e-mail через прокси.
Миниатюры
Отправка писем на E-mail не работает  
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
16.12.2016, 04:09  [ТС]
Orlangur1991, я перешёл из темы Изменить параметры прокси
с вопросом по отправке почты с соединением интернета через прокси. Вы пишете:
Цитата Сообщение от Orlangur1991 Посмотреть сообщение
так надо просто при отправке почты указывать настройки прокси
Подскажите пожалуйста как конкретно это сделать? В какие переменные SmtpClient вводить ip, port, login, password...
(настройки интернета через прокси в предидущем посте)
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
16.12.2016, 10:19
jkrnd, да, я кажись ляпнул не подумав, по ходу smtp клиенту не передать значение прокси. А если выставить системные настройки, разве не подхватывает?
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
16.12.2016, 10:33  [ТС]
Цитата Сообщение от Orlangur1991 Посмотреть сообщение
выставить системные настройки
Это вы о чём? Настройки браузера (и не только IExplorerа) давно установлены. Ряд приложений, антивирусник, аська, 2Gis и т.п. настроены на работу через прокси. С этим проблем нет.

Добавлено через 5 минут
Интернет организован так: по радиосигналу существует связь с сервера головной организации на раздающий роутер в нашем здании, ну и к нему уже куча хвостов имеющих общее адресное пространство и работающие через один и тот же ip сервера. Если в настройка браузера хоста не прописать параметры прокси, будет только локальная сеть без интернета.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
16.12.2016, 10:40
jkrnd, ну вообще, когда выставляете настройки для IE, должны работать и остальные приложения. Может там порты прикрыты?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2016, 10:40
Помогаю со студенческими работами здесь

Отправка писем через функцию mail();
всем привет!... столкнулся с такой проблемой то, что не могу отправить письма по всей базе данных! в базе 10 348 электронных ящиков....

Отправка писем через функцию mail();
всем привет!... встал вопрос отправки писем по базе зарегистрированных пользователей которые имеются на сайте. создал код - все...

Отправка писем без использования функции mail()
Здравствуйте! Возникла проблема с функциями отправки писем с сайта,а точнее с mail() и sendmail.В тех поддержке мне ответили: ...

Отправка через SMTP писем с mail.ru на yandex.ru
Всем доброго времени суток. На этот раз проблема состоит в следующем: нужно отправить сообщение с ящика mail.ru на ящик yandex.ru и на...

Отправка писем с localhost используя pear: Mail
У меня такой вопрос надо чет настраивать в php, или гдето еще чтоб отсылать письма с localhost используя pear: Mail


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru