{
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();
}
}
}