Смекни!
smekni.com

Разработка приложения клиента электронной почты (стр. 3 из 3)

{

SmtpClient client = newSmtpClient(sSMTPServer, 25);

client.Credentials = newNetworkCredential(Form1.sUserName, Form1.sPassword);

MailMessage message = newMailMessage(Form1.sUserName, sTo, sSubject, sBody);

client.Send(message);

}

}

publicclassPOP3 : System.Net.Sockets.TcpClient // Класс POP3 отвечающий за доставку смс сообщений

{

publicvoid ConnectPOP(string sServerName, string sUserName, string sPassword) // соединение с POP сервером

{

string sMessages;

string sResult;

//вызываем метод connect класса TcpClient

Connect(sServerName, 110);

sResult = Response();

//проверка ответа

if (sResult.Substring(0, 3) != "+OK")

thrownewPOPException(sResult);

//отправляем имя пользователя

sMessages = "USER " + sUserName + "\r\n";

Write(sMessages);

sResult = Response();

//проверка ответа

if (sResult.Substring(0, 3) != "+OK")

thrownewPOPException(sResult);

//отправляем пароль

sMessages = "PASS " + sPassword + "\r\n";

Write(sMessages);

sResult = Response();

//проверка ответа

if (sResult.Substring(0, 3) != "+OK")

thrownewPOPException(sResult);

}

publicvoid DisconnectPOP() //отсоединение от POP сервера

{

string sMessage;

string sResult;

sMessage = "QUIT\r\n";

Write(sMessage);

sResult = Response();

//проверка ответа

if (sResult.Substring(0, 3) != "+OK")

thrownewPOPException(sResult);

}

publicArrayList ListMessages() //получение списка сообщений с сервера

{

string sMessage;

string sResult;

ArrayList returnValue = newArrayList();

sMessage = "LIST\r\n";

Write(sMessage);

sResult = Response();

//проверка ответа

if (sResult.Substring(0, 3) != "+OK")

thrownewPOPException(sResult);

while (true)

{

sResult = Response();

if (sResult == ".\r\n")

{

// Program.MainForm.Add(returnValue);

return returnValue;

}

else

{

POP3EmailMessage oMailMessage = newPOP3EmailMessage();

//Определяем разделитель

char[] sep = { ' ' };

//используем метод Split, чтобы разбить массив

string[] values = sResult.Split(sep);

//Помещаем данные в объект OMailMessage

long count=Int32.Parse(values[0]);

// ToString(count);

// Program.MainForm.Add(rv);

oMailMessage.msgNumber = Int32.Parse(values[0]);

oMailMessage.msgSize = Int32.Parse(values[1]);

oMailMessage.msgReceived = false;

returnValue.Add(oMailMessage);

continue;

}

}

}

publicPOP3EmailMessage RetriveMessage(POP3EmailMessage msgRETR) //доставка сообщений с POP сервера

{

string sMessage;

string sResult;

POP3EmailMessage oMailMessage = newPOP3EmailMessage();

oMailMessage.msgNumber = msgRETR.msgNumber;

oMailMessage.msgSize = msgRETR.msgSize;

//для получения соответсвующего сообщения посылаем RETR

sMessage = "RETR " + msgRETR.msgNumber + "\r\n";

Write(sMessage);

sResult = Response();

if (sResult.Substring(0, 3) != "+OK")

thrownewPOPException(sResult);

//поскольку сообщение получено устанавливаем во флаге true

oMailMessage.msgReceived = true;

while (true)

{

sResult = Response();

if (sResult == ".\r\n")

break;

else

oMailMessage.msgContent += sResult;

}

string content = oMailMessage.msgContent;

return oMailMessage;

}

publicvoid DeleteMessage(POP3EmailMessage msgDELE) //удаление сообщений с POP сервера

{

string sMessage;

string sResult;

sMessage = "DELE" + msgDELE.msgNumber + "\r\n";

Write(sMessage);

sResult = Response();

if (sResult.Substring(0, 3) != "+OK")

thrownewPOPException(sResult);

}

privatevoid Write(string sMessage)

{//используется для перекодирования данных

System.Text.ASCIIEncoding oEncodeData = new System.Text.ASCIIEncoding();

//теперь пересылаем сообщение в буфер для отправки в сетевой поток TCP

byte[] WriteBuffer = newbyte[1024];

WriteBuffer = oEncodeData.GetBytes(sMessage);

//выводим содержимое буффера в поток TCP

NetworkStream NetStream = GetStream();

NetStream.Write(WriteBuffer, 0, WriteBuffer.Length);

}

privatestring Response() //перекодировка сообщений

{

System.Text.ASCIIEncoding oEncodedData = new System.Text.ASCIIEncoding();

byte[] ServerBuffer = newByte[1024];

NetworkStream NetStream = GetStream();

int count = 0;

while (true)

{

byte[] buff = newByte[2];

int bytes = NetStream.Read(buff, 0, 1);

if (bytes == 1)

{

ServerBuffer[count] = buff[0];

count++;

if (buff[0] == '\n')

break;

}

elsebreak;

}

string ReturnValue = oEncodedData.GetString(ServerBuffer, 0, count);

return ReturnValue;

}

}

}

}

FormSettings.cs

namespace Mail_client

{

publicpartialclassFormSettings : Form

{

privatestring dir1;

public FormSettings()

{

InitializeComponent();

dir1=Directory.GetCurrentDirectory();

LoadProfile();

}

publicstring LoadProfile() //считывание файла профиля

{

FileStream fs = newFileStream(dir1+ "\messages\profile\porfile.txt",

FileMode.Open, FileAccess.Read);

StreamReader sr = newStreamReader(fs);

string CurLine;

int i = 0;

while

((CurLine = sr.ReadLine()) != null)

{

i++;

if (i == 1)

{

Form1.countMes = Convert.ToInt32(CurLine);

}

if (i == 2)

{

POP3.Text = CurLine;

Form1.sServerName = CurLine;

}

if (i == 3)

{

UserName.Text = CurLine;

Form1.sUserName = CurLine;

}

if (i == 4)

{

Pass.Text = CurLine;

Form1.sPassword = CurLine;

}

if (i == 5)

{

SMTP.Text = CurLine;

Form1.SMTPserver = CurLine;

}

}

fs.Close();

sr.Close();

return CurLine;

}

publicvoid EditProfile() // изменение профиля почтового ящика

{

StreamWriter sw = newStreamWriter(dir1+ "\messages\profile\porfile.txt"); //сохраняем данные почтового ящика

{

sw.WriteLine(Form1.countMes.ToString());

sw.WriteLine(POP3.Text);

sw.WriteLine(UserName.Text);

sw.WriteLine(Pass.Text);

sw.WriteLine(SMTP.Text);

}

// FileStream myStream = File.Create("F:\messages\profile\porfile.txt");

string str = Form1.countMes.ToString();

sw.Close();

}

privatevoid Cancel_Click(object sender, EventArgs e) //отмена

{

this.Hide();

}

privatevoid FormSettings_FormClosing(object sender, FormClosingEventArgs e) //при закрытии формы

{ //отменятся все изменения и форма скрывается

e.Cancel = true;

this.Hide();

}

privatevoid Save_Click_1(object sender, EventArgs e) //сохранение профиля

{

EditProfile();

}

privatevoid Ok_Click(object sender, EventArgs e) //при нажатии клавиши Ок сохраняется профиль

{//и форма сворачивается

EditProfile();

this.Hide();

}

}

}