Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
C# .NET Программист
34 / 22 / 5
Регистрация: 11.11.2016
Сообщений: 426
1

Ошибка при отправке почты

05.02.2019, 13:21. Показов 10491. Ответов 10

Author24 — интернет-сервис помощи студентам
Всем привет. Пишу приложение на ASP.NET Core. Использую MailKit для отправки почты.
Проблема такова: невозможно подключиться к SMTP серверу (причину так и не понял).
Решил использовать SSL. Код:

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
public async Task SendEmailAsync(string email, string subject, string message)
        {
            try
            {
                var emailMessage = new MimeMessage();
                emailMessage.From.Add(new MailboxAddress("*******", "***********@mail.ru"));
                emailMessage.To.Add(new MailboxAddress(email));
                emailMessage.Subject = subject;
                emailMessage.Body = new TextPart(MimeKit.Text.TextFormat.Html)
                {
                    Text = message
                };
 
                using (var client = new SmtpClient())
                {
                    await client.ConnectAsync("smtp.mail.ru", 25, false);
                    await client.AuthenticateAsync("*****@mail.ru", "*****");
                    await client.SendAsync(emailMessage);
 
                    await client.DisconnectAsync(true);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Ошибка при отправке почты" + e.Message);
            }
        }
Ошибка:
An error occurred while attempting to establish an SSL or TLS connection.
One possibility is that you are trying to connect to a port which does not support SSL/TLS.
The other possibility is that the SSL certificate presented by the server is not trusted by the system for one or more of the following reasons:
The server is using a self-signed certificate which cannot be verified.
The local system is missing a Root or Intermediate certificate needed to verify the server's certificate.
The certificate presented by the server is expired or invalid.
See https://github.com/jstedfast/M... ertificate for possible solutions.


Произошла ошибка при попытке установить соединение SSL или TLS.
Возможно, вы пытаетесь подключиться к порту, который не поддерживает SSL / TLS.
Другая возможность состоит в том, что сертификат SSL, представленный сервером, не является доверенным для системы по одной или нескольким из следующих причин:
Сервер использует самозаверяющий сертификат, который невозможно проверить.
В локальной системе отсутствует корневой или промежуточный сертификат, необходимый для проверки сертификата сервера.
Срок действия сертификата, предоставленного сервером, истек или недействителен.
См. Https://github.com/jstedfast/M... ertificate для возможных решений.


Смотрел по ссылке. Решение не помогло.
Решил сделать так, как описано здесь: https://metanit.com/sharp/aspnet5/16.5.php
Не помогло.

И что более странно, то, что пару раз письмо отправлялось, но позже перестало.
Пробовал указать другие порты, не помогло. Я так и не понял, в чем дело.

Буду рад слышать ваши ответы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2019, 13:21
Ответы с готовыми решениями:

Ошибка HTTP 500 - внутреняя ошибка сервера при отправке почты.
Я пытаюсь отправить почту и присоединяю к ней письма Вот часть страницы Dim myMail Set myMail =...

Ошибка при использовании CDONTS при отправке почты
Помогите, пожалуйста, решить такую проблему. При создании объекта CDONTS.NewMail выдается...

CDONTS при отправке почты не подключается
Вопрос уже задавал по ASP+Exchange, не получается отослать мэил. на машинке с IIS (вин2000) есть...

При отправке почты с помощью CDONTS.NewMail, ASP выдает ошибку 'разрешение отклонено'.
На сервере стоит Exchange сервер. При отправке почты с помощью CDONTS.NewMail, ASP выдает ошибку...

10
.NET C#,ASP.NET MVC
Эксперт .NET
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
05.02.2019, 14:24 2
Цитата Сообщение от Ислам2001 Посмотреть сообщение
Возможно, вы пытаетесь подключиться к порту, который не поддерживает SSL / TLS.
Ошибка при отправке почты
0
C# .NET Программист
34 / 22 / 5
Регистрация: 11.11.2016
Сообщений: 426
05.02.2019, 14:45  [ТС] 3
lvlkoo, я пробовал все, не получилось. И что удивляетЮ то, что, пару раз отправилось все-таки, но затем опять перестало.
0
[Bicycle Reinventor]
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
05.02.2019, 15:46 4
Модеры, отредактируйте первый пост в теме, пока у аффтара не увели почту и все акки, зарегистрированные на неё, ибо я спокойно залогинился.
0
C# .NET Программист
34 / 22 / 5
Регистрация: 11.11.2016
Сообщений: 426
05.02.2019, 15:52  [ТС] 5
Цитата Сообщение от Exerion Посмотреть сообщение
Модеры, отредактируйте первый пост в теме, пока у аффтара не увели почту и все акки, зарегистрированные на неё, ибо я спокойно залогинился.
Забыл отредактировать...
0
OwenGlendower
05.02.2019, 16:54
  #6

Не по теме:

Цитата Сообщение от Exerion Посмотреть сообщение
Модеры, отредактируйте первый пост в теме, пока у аффтара не увели почту и все акки, зарегистрированные на неё, ибо я спокойно залогинился.
О таких вещах лучше сообщать с помощью кнопки "Обратить внимание администрации на это сообщение" (красный треугольник с восклицательным знаком). Иначе просьба может остаться незамеченной.

0
HF
1193 / 784 / 186
Регистрация: 09.09.2011
Сообщений: 2,397
Записей в блоге: 2
05.02.2019, 20:08 7
Лучший ответ Сообщение было отмечено Ислам2001 как решение

Решение

В интернете находятся 4 известных причины ошибок работы с почтой (я и сам в них попадал). Вам нужно проверить поочерёдно и найдёте тот, который вам поможет. Вот эти рекомендации:

1. Во-первых, всё-таки стоит почитать на mail.ru описание работы по клиентам. Так как там могут меняться названия серверов. В интернете например есть такой адрес: smtp.mail.me.com. Ну и возможно что требуется обязательно работать не по 25 а другому порту. То есть читаем реальные инструкции, а не метанит примеры.

2. Установить не false, а Auto, чтобы пакет сам понял как ему подключаться. Или надо чётко сказать по какому протоколу нужна аутентификация.
C#
1
await client.ConnectAsync(mailService.Host, mailService.Port,   SecureSocketOptions.Auto);
как например так:
C#
1
client.Connect ("smtp.mail.me.com", 587, SecureSocketOptions.StartTls);
3. иногда встречается вот такой финт
C#
1
client.AuthenticationMechanisms.Remove ("XOAUTH2");
видимо отключающий какую-то обязательную аутентификацию. Добавляется всегда вместе с п.2

4. и есть вообще жёсткий хак, связанный с игнорированием ошибочных сертификатов
C#
1
2
   client.ServerCertificateValidationCallback = (mysender, certificate, chain, sslPolicyErrors) => { return true; };
   client.CheckCertificateRevocation = false;
5. ну и я бы всё же попробовал сделать что говорит ошибка - добавить сертификат сервера в доверенные.
1
C# .NET Программист
34 / 22 / 5
Регистрация: 11.11.2016
Сообщений: 426
06.02.2019, 00:10  [ТС] 8
HF, я так и не понял, как добавить сертификат сервера в доверенные, поэтому воспользовался 4 способом (хотя может быть он и не совсем правильный).

Спасибо большое за развернутый ответ. Мне порой не хватает такой помощи. Либо я нуб, либо "не туда смотрю".
Респект!
0
C# .NET Программист
34 / 22 / 5
Регистрация: 11.11.2016
Сообщений: 426
31.03.2019, 21:23  [ТС] 9
Проблема появилась снова спустя некоторое время. И появилась другая ошибка "Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение [::ffff:93.158.134.38]:465". Причиной оказался антивирус. Забыл его отключить. И не думал, что дело в нем.
0
HF
1193 / 784 / 186
Регистрация: 09.09.2011
Сообщений: 2,397
Записей в блоге: 2
31.03.2019, 22:10 10
Цитата Сообщение от Ислам2001 Посмотреть сообщение
Причиной оказался антивирус. Забыл его отключить. И не думал, что дело в нем.
Как это определилось? Просто вспомнили что он есть и логи проверили?

Добавлено через 2 минуты
Цитата Сообщение от Ислам2001 Посмотреть сообщение
я так и не понял, как добавить сертификат сервера в доверенные,
Самый простой способ: зайти на сайт почтового сервера, веб интерфейс. Посмотреть какой сертификат там используется и просто добавить в браузере его в доверенные. Или же почитать в разделе тех.поддержки о требованиях подключения.
Но это такой.. банальный способ. Не всегда может сработать. В нормальных системах все требования расписаны и сертификаты доступны.
0
C# .NET Программист
34 / 22 / 5
Регистрация: 11.11.2016
Сообщений: 426
31.03.2019, 22:47  [ТС] 11
Цитата Сообщение от HF Посмотреть сообщение
Просто вспомнили что он есть и логи проверили?
Вспомнил, что в некоторых случаях причина неуспешного подключения - фаерволы и.т.п.

Цитата Сообщение от HF Посмотреть сообщение
добавить в браузере его в доверенные
В таком случае, каждый пользователь должен следовать данной инструкции.

Исходя из моих вопросов, есть мнение, что у меня еще недостаточно опыта для написания многофункциональных приложений...
0
31.03.2019, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2019, 22:47
Помогаю со студенческими работами здесь

Ошибка при отправке письма
В общем, залил сайт на хостинг, не получается отправить письмо, бьет ошибку: The SMTP server...

Ошибка при отправке SMS на почтовый ящик
MailMessage mail = new MailMessage(); mail.From = new...

Ошибка при отправке e-mail (mailMessage), настройка SMTP
Мой первый сайт на ASP.NET на хостинге somee.com. Я делаю так, чтобы посетитель сайта мог...

Ошибка при отпраке почты с помощью ASP
Почему когда я создаю объект set sm = server.CreateObject ('CDONTS.Newmail') в Explorer выдвётся...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru