diahai_info Ответов: 1

C# обрабатывает ответ TELNET от почтового сервера


Всем привет,
Я хочу закодировать приложение, чтобы определить, существует ли электронная почта или нет. Шаги здесь:
Шаг 1. telnet mta7.am0.yahoodns.net 25 // подключение к почтовому серверу yahoo
Шаг 2. EHLO hi // скажи helo
Шаг 3. почта от: <test@gmail.com> // проверить отправителя
Шаг 4. rcpt to: <lisa@yahoo.com> // проверить приемник

Но я получил ответ только на шаг 1. И пропустил ответ с шага 2,3,4.

Я получил этот ответ только ниже (Шаг 1):
220 mta4051.mail.gq1.yahoo.com ESMTP ready


Пожалуйста, дайте мне решение. Большое спасибо!

Что я уже пробовал:

Мой код:
static void Main(string[] args)
        {
            TcpClient tcpClient;
            NetworkStream networkStream;
            StreamWriter streamWriter;

            tcpClient = new TcpClient("mta7.am0.yahoodns.net", 25);

            byte[] writeBuffer;
            byte[] readBuffer;
            using (networkStream = tcpClient.GetStream())
            {
                networkStream.Flush();

                writeBuffer = System.Text.Encoding.ASCII.GetBytes("EHLO hi" + Environment.NewLine);
                networkStream.Write(writeBuffer, 0, writeBuffer.Length);
                networkStream.Flush();

                writeBuffer = System.Text.Encoding.ASCII.GetBytes("mail from: <test@gmail.com>" + Environment.NewLine);
                networkStream.Write(writeBuffer, 0, writeBuffer.Length);
                networkStream.Flush();

                writeBuffer = System.Text.Encoding.ASCII.GetBytes("rcpt to: <lisa@yahoo.com>" + Environment.NewLine);
                networkStream.Write(writeBuffer, 0, writeBuffer.Length);
                networkStream.Flush();

                string output = null;

                if (networkStream.CanRead)
                {
                    readBuffer = new byte[tcpClient.ReceiveBufferSize];
                    networkStream.Read(readBuffer, 0, tcpClient.ReceiveBufferSize);

                    output = System.Text.Encoding.ASCII.GetString(readBuffer).Trim();
                    Console.WriteLine(output);
                }
                Console.ReadLine();
            }
        }

Richard Deeming

Попробуйте прочитать ответ от одной команды до посылаю следующую команду.

1 Ответов

Рейтинг:
6

F-ES Sitecore

Не тратьте свое время впустую, если это не для практики, в наши дни большинство почтовых серверов не сообщат, что адрес электронной почты недействителен.

Во-вторых, google "c# tcpclient send email smtp", и вы найдете примеры того, как это сделать, так как Ричард сказал, что вам нужно отправлять команды по одной после обработки ответа.

Отправка почты с помощью C# через SMTP[^]


diahai_info

Спасибо. Это проект, который мне нужен.

Dave Kreskowiak

Да, это не сработает. Вы не можете проверить, действительно ли адрес электронной почты работает или нет. Серверы не будут этого делать, потому что спамеры будут забивать эти серверы, чтобы найти реальные адреса.