public void Write_base64(string message)
{
System.Text.ASCIIEncoding en = new System.Text.ASCIIEncoding();
byte[] WriteBuffer = new byte[1024];
WriteBuffer = en.GetBytes(message);
message = System.Convert.ToBase64String(WriteBuffer, 0, WriteBuffer.Length);
Console.WriteLine(message);
WriteBuffer = en.GetBytes(message);
NetworkStream stream = GetStream();
stream.Write(WriteBuffer, 0, WriteBuffer.Length);
}
работа с TCP
Код:
Но плучаю следующую ошибку от сервера 501 Invalid base64 data
Правильно ли я преобразовую в base64?
Цитата: dimas09
Использую следующую метод:
Правильно ли я преобразовую в base64?
Правильно ли я преобразовую в base64?
Нет.
Перекодировка в аски осуществляется проще:
Код:
Encoding encoding = Encoding.ASCII;
byte[] encoded_message = encoding.GetBytes(message.ToCharArray());
string b64 = Convert.ToBase64String(encoded_message);
using(StreamWriter writer = new StreamWriter(GetStream()) {
writer.Write(b64);
writer.Flush();
}
byte[] encoded_message = encoding.GetBytes(message.ToCharArray());
string b64 = Convert.ToBase64String(encoded_message);
using(StreamWriter writer = new StreamWriter(GetStream()) {
writer.Write(b64);
writer.Flush();
}
Кроме того, проверьте, что у вас сетевой поток закрывается корректно.
Для работы с потоками лучше всего использовать using(Stream stream = ...) { } конструкцию.
Код:
message = "AUTH LOGIN\r\n";
Write(message);
message = "*******\r\n";
Write_base64(message);
response = Response();
if (response.Substring(0, 3) != "334")
{
throw new SmtpException(response);
}
message = "******\r\n";
Write_base64(message);
response = Response();
Console.WriteLine(response);
if (response.Substring(0, 3) != "334")
{
throw new SmtpException(response);
}
Write(message);
message = "*******\r\n";
Write_base64(message);
response = Response();
if (response.Substring(0, 3) != "334")
{
throw new SmtpException(response);
}
message = "******\r\n";
Write_base64(message);
response = Response();
Console.WriteLine(response);
if (response.Substring(0, 3) != "334")
{
throw new SmtpException(response);
}
изменений в функцию Write_base64 не делал, логин отправляется - все ок, а вот после отправки пароля в поток, ответ получить не могу.
Но для этого уже существует класс System.Net.Mail.SmtpClient.
Я должен написать почтовый клиент в качестве курсовой работы