여기에 제안 된 항목에서 필자가 찾은 내용을 찾지 못했기 때문에 pop3 용 자체 라이브러리에서 작업하고 있습니다. 내 문제는 특정 지점 (일반적으로 텍스트의 링크)까지만 줄을 읽을 수있는 메시지를 열 때 멈추고 반복되지만 충돌하지 않는 것입니다. 코드는 다음과 같습니다 다른 쪽 끝에서 서비스가 CRLF로 끝나는 라인을 반환POP3를 사용하는 TcpClient 응답 스트림은 한 줄 이상 읽지 않습니다.
Data = "RETR 1" + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData, 0, szData.Length);
txtLog.Text += RdStrm.ReadLine() + CRLF;
for (int i = 0; i < 33; i++)
{
txtLog.Text += RdStrm.ReadLine() + CRLF;
}
string szTemp;
szTemp = RdStrm.ReadLine();
// here it's supposed to start reading the actual message
while(szTemp != "-")
{
txtLog.Text += szTemp + CRLF;
szTemp = RdStrm.ReadLine();
}
제목에 "C#"을 붙일 필요가 없습니다. 그것이 바로 태그입니다. –
문제는 TcpClient가 아닌 프로토콜을 구현하는 방법과 관련이 있습니다. 데이터가 그럴 가능성이 가장 큰 이유는 단순히 고객에게 전송되지 않는다는 것입니다. 또한 TcpClient는 NetworkStream을 반환하고 NetworkStream에는 코드에 표시되는 ReadLine 메서드가 없습니다. 한 번 더 관련이 있지만 질문에 반영되지 않습니다. 최선의 조언은 다음과 같습니다. 코드를주의 깊게 확인하고 프로토콜 구현을 디버깅하십시오. –
@zespri 1, 전체 코드는 다음을 포함합니다. RdStrm = new StreamReader (Server.GetStream()); 그 while 루프를 제외하고 나는 모든 명령으로부터 응답을 얻고있다. for 루프를 수행하면 전자 메일의 하이퍼 링크 앞에 모든 정보가 표시됩니다. 그래서 구현이 모두 훌륭합니다. 그냥 스트림에서 읽는 것만으로 문제가되는 것 같습니다. – Darko