У меня есть журнал для простой транзакции SMTP. (Его немного длиннее, поэтому обращайтесь к нему here). Он показывает обмен рукопожатиями низкого уровня, такими как HELO
, MAIL
и т. Д.Понять конец передачи сообщения электронной почты в SMTP
Когда сервер, который должен получить электронное письмо, готов принять данные электронной почты, он отправляет следующее (строка 12 в журнале):
RawSmtp Information: 0 : << 354 Start mail input; end with <CRLF>.<CRLF>
Однако конец передачи, немного запутанным (строки): 74/75
RawSmtp Information: 0 : >> cannot foresee
RawSmtp Information: 0 : >>
RawSmtp Information: 0 : << 250 OK
, которая, если смотреть в блокноте выглядит следующим образом:
Код однако просто написано так:
WriteResponse(writer, "354 Start mail input; end with <CRLF>.<CRLF>");
string line;
while ((line = reader.ReadLine()) != null && line != ".")
{
//do stuff
}
Это стандарт? Я имею в виду отправку чего-то вроде <CRLF>.<CRLF>
и только для проверки точки (.
) ...?
Просто чтобы прояснить ответ бит: метод StreamReader.ReadLine() удаляет последовательность '' \ r \ n "конца строки из строк, которые он возвращает, поэтому в этом случае результирующая строка будет'.. '. – jstedfast