Bạn phải sử dụng SslStream cùng với TcpClient sau đó sử dụng SslStream để đọc dữ liệu thay vì TcpClient.
cái gì đó dọc theo dòng:
TcpClient mail = new TcpClient();
SslStream sslStream;
mail.Connect("pop.gmail.com", 995);
sslStream = new SslStream(mail.GetStream());
sslStream.AuthenticateAsClient("pop.gmail.com");
byte[] buffer = new byte[2048];
StringBuilder messageData = new StringBuilder();
int bytes = -1;
do
{
bytes = sslStream.Read(buffer, 0, buffer.Length);
Decoder decoder = Encoding.UTF8.GetDecoder();
char[] chars = new char[decoder.GetCharCount(buffer, 0, bytes)];
decoder.GetChars(buffer, 0, bytes, chars, 0);
messageData.Append(chars);
if (messageData.ToString().IndexOf("<EOF>") != -1)
{
break;
}
} while (bytes != 0);
Console.Write(messageData.ToString());
Console.ReadKey();
EDIT
Đoạn mã trên sẽ đơn giản kết nối qua SSL cho Gmail và sản lượng nội dung của một thông báo test. Để đăng nhập vào một tài khoản gmail và lệnh vấn đề mà bạn sẽ cần phải làm một cái gì đó dọc theo dòng:
TcpClient mail = new TcpClient();
SslStream sslStream;
int bytes = -1;
mail.Connect("pop.gmail.com", 995);
sslStream = new SslStream(mail.GetStream());
sslStream.AuthenticateAsClient("pop.gmail.com");
byte[] buffer = new byte[2048];
// Read the stream to make sure we are connected
bytes = sslStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
//Send the users login details
sslStream.Write(Encoding.ASCII.GetBytes("USER USER_EMAIL\r\n"));
bytes = sslStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
//Send the password
sslStream.Write(Encoding.ASCII.GetBytes("PASS USER_PASSWORD\r\n"));
bytes = sslStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
// Get the first email
sslStream.Write(Encoding.ASCII.GetBytes("RETR 1\r\n"));
bytes = sslStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
Rõ ràng, không có tất cả những sự trùng lặp mã :)
Cảm ơn câu trả lời của bạn.Nhưng đăng nhập của người dùng là vấn đề chính của tôi. –
@MdKamruzzamanPallob: Xem cập nhật của tôi – codingbadger
rất rất cảm ơn câu trả lời của bạn. Tôi làm việc tuyệt vời. Hơi có nghĩa là nó sử dụng giao thức pop để truy cập thư. Nhưng tôi muốn truy cập email bằng giao thức imap. Tôi đã thay đổi tên máy chủ và số cổng là "imap.gmail.com" và "993" nhưng nó không hoạt động. Làm thế nào nó có thể được thực hiện? –