Что делать после STARTTLS в необработанном соединении сокета с SMTP-сервером на C #?

#c# #.net #email #smtp #starttls

Вопрос:

Я пытаюсь подключиться к SMTP-серверу с помощью System.Net.Sockets.Сокет. Я могу отправлять электронные письма без проблем, если нет команды STRARTTLS, и я просто подключаюсь к порту 25, отправляю HELO, MAIL FROM, RCTP TO, MAIL и т. Д., И моя электронная почта отправляется. Теперь мне нужно подключиться к другому серверу и использовать STARTTLS, прежде чем я смогу отправить какое-либо электронное письмо, и я не знаю, что делать после отправки STARTTLS и получения успешного ответа от SMTP-сервера. Если я отправлю какую-либо команду после получения ответа STARTTLS, сервер не вернет никакого ответа, и я не смогу отправить следующие команды.

Я нашел что-то вроде этого, но я понятия не имею, что означает «начать согласование TLS» и как я могу это сделать в C # / .NET, чтобы иметь возможность отправлять следующие команды.

S: <ожидает подключения к TCP-порту 25> C:
S: 220 mail.imc.org Служба SMTP готова C: EHLO mail.example.com
Субъект: 250-mail.imc.org предлагает теплые объятия приветствия S: 250-8BITMIME
S: 250-STARTTLS S: 250 DSN C: STARTTLS S: 220 Go ahead C: начинает согласование TLSC amp; S: согласовать сеанс TLS C amp; S: проверить результат согласования C: EHLO mail.example.com Субъект: 250-mail.imc.org нежно касается вашей руки на мгновение S: 250-8BITMIME S: 250 DSN

источник: https://datatracker.ietf.org/doc/html/rfc3207#section-5

Комментарии:

1. Вы делаете так, как сказано, нет? Начните согласование защищенного канала..

2. Я не знаю, что делать после отправки STARTTLS — вы на самом деле пишете свой собственный SMTP-клиент? Или вы просто используете, например, MimeKit / MailKit для отправки электронной почты?

3. Это мой собственный SMTP-клиент. Я не знаю, как я могу «начать переговоры по безопасному каналу» на C #. Это основная проблема.

4. Просто любопытно а) почему вы беспокоитесь и б) почему бы просто не посмотреть, что, например, делает MailKit