Разработка приложения – клиента электронной почты
Цель данной курсовой работы укрепить и улучшить практические навыки основ объектно-ориентированного программирования, полученных во время изучения курса, по данному предмету, а также научиться применять полученные знания в сетевом программировании .NET. Программа предназначена для получения и отправки электронных писем, содержит теоретические и практические материалы, позволяющие… Читать ещё >
Разработка приложения – клиента электронной почты (реферат, курсовая, диплом, контрольная)
AСТРAХAНСКИЙ ГОСУДAРСТВEННЫЙ УНИВEРСИТEТ
Кaфeдрa
информaционных систeм и тeхнологий Курсовaя рaботa по дисциплинe
«Объeктно-ориeнтировaнноe прогрaммировaниe»
нa тeму:
«Разработка приложения — клиента электронной почты»
Выполнили: студeнты группы ЗИ-31
Егоров Д.С.
Арушанов С.С.
Курсовaя рaботa допущeнa к зaщитe
Руководитeль: aсс. Пaвлов A.A.
Курсовaя рaботa выполнeнa с оцeнкой ___________
Пaвлов A.A.___________
Aстрaхaнь — 2009 г.
- ВВЕДЕНИЕ
- 1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ
- 2. РАБОЧИЙ ПРОЕКТ
- 2.1. Общие сведения о работе программы
- 2.2. Функциональное назначение
- 2.3. Инсталляция и выполнение программы
- 2.4. Общий алгоритм программного обеспечения
- 2.5. Разработанные меню и интерфейсы
- 2.6. Описание основных классов и методов приложения
- 3. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ
- ЗАКЛЮЧЕНИЕ
- СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- ПРИЛОЖЕНИЕ 1
Язык С++, разработанный Microsoft имеет массу преимуществ перед другими языками типа С, С++, Java: простота, объектная ориентированность, типовая защищенность, «сборка мусора», поддержка совместимости версий и многое другое. Данные возможности позволяют быстро и легко разрабатывать приложения. При создании С++ его авторы учитывали достижения многих других языков программирования: C++, С, Java, Visual Basic и т. д. Надо заметить, что поскольку С++ разрабатывался что называется «с нуля», у его авторов была возможность не переносить в него все неудачные особенности любого из предшествующих языков. Особенно это касается проблемы совместимости с предыдущими версиями. В результате получился действительно простой, удобный и современный язык, который по мощности не уступает C++, но существенно повышает продуктивность разработок. Ввиду высокой объектной ориентированности, язык С++ великолепно подходит для быстрого конструирования различных компонентов — от высокоуровневой бизнес-логики до системных приложений, использующих низкоуровневый код. Также следует отметить, что С++ является и Web-ориентированным — с помощью простых встроенных конструкций языка ваши компоненты легко превратятся в Web-сервисы, к которым можно будет обращаться из Интернета, используя любой язык на любой операционной системе. Дополнительные возможности и преимущества С++ перед другими языками приносит использование современных Web-технологий, таких как: XML (Extensible Markup Language) и SOAP (Simple Object Access Protocol). Удобные методы для разработки Web-приложений позволяют программистам, владеющим навыками объектно-ориентированного программирования, легко освоиться в разработке Web-сервисов.
Цель данной курсовой работы укрепить и улучшить практические навыки основ объектно-ориентированного программирования, полученных во время изучения курса, по данному предмету, а также научиться применять полученные знания в сетевом программировании .NET.
1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ
Разработка приложения-клиента электронной почты.
В ходе разработки клиентского приложения электронной почты, необходимо разработать и реализовать с использование двух основных протоколов передачи электронной почты POP3 и SMTP:
· методы приема и отправки сообщений;
· интуитивно понятный интерфейс, обеспечивающий удобную работу с приложением;
· сохранение почтовых сообщений на локальном диске компьютера;
· реализовать алгоритмы построения списка сообщений;
· при выборе сообщения обеспечить отображение темы сообщения, отправителя и адресата письма, а также текст самого сообщения;
· дополнительно необходимо реализовать возможность сворачивания приложения в трей панели задач Windows;
· проверку наличия новых сообщений по времени и смену иконки в трее при получении новых сообщений.
2. РАБОЧИЙ ПРОЕКТ
2.1. Общие сведения о работе программы
Программа разработaнa в среде программирования Microsoft Visual Studio 2008, на языке программирования C++.
Программа отправляет запрос на сервер электронной почты. Протокол POP3 проверяет правильность ввода имени и пароля электронной почты. После этого программа получает ответ от протокола о статусе ввода пароля и имени (правильно, не правильно). Если все переменные введены правильно, то происходит подключение к серверу. После этого программа получает список сообщений с сервера, а после этого сохраняет их на локальном компьютере. После завершения получения сообщения происходит отсоединение от сервера POP3.
При отправке сообщений используется протокол SMTP. В начале происходит авторизация на сервере SMTP, а после этого непосредственная передача сообщения почтовому демону.
2.2. Функциональное назначение
Программа предназначена для получения и отправки электронных писем, содержит теоретические и практические материалы, позволяющие систематизировать знания по работе с сетевыми протоколами электронной почты.
2.3. Инсталляция и выполнение программы
Для запуска программы из среды «Microsoft Visual Studio 2008» необходимо, зайдя в «Microsoft Visual Studio 2008» запустить файл Mail client.sln.
2.4. Общий алгоритм программного обеспечения
Программа состоит из методов, которые используются для подключения к серверам электронной почты, используя протоколы электронной почты, а так же для получения и отправки электронных писем.
При нажатии на меню «Получить почту», происходит подключение к серверу через протокол, и получение списка входящих писем.
Рис. 1.1. «Диаграмма работы протокола POP3»
При нажатии на кнопку написать письмо в меню «Файл», загружается окно нового письма, в котором содержатся поля: кому адресовано письмо, поле темы, поле для текста письма и кнопка для отправки письма.
При нажатии на кнопку «SendMail», происходит отправка письма, используя протокол SMTP.
При нажатии кнопки выход в меню «Файл», происходит завершение работы программы.
Рис. 1.2. «Диаграмма работы протокола SMTP»
2.5. Разработанные меню и интерфейсы
При запуске программы на экране появляется главное окно программы с элементами управления (Рис. 2.1).
Рис. 2.1. «Главное окно»
Для настройки почтового клиента необходимо нажать на меню «Настройки». В результате, загружается окно настроек (рис. 2.2.).
Рис. 2.2. «Настройки»
Для отправки письма необходимо запустить окно «Написать письмо» (рис 2.3.), нажатием на кнопку «Написать письмо» в меню «Файл».
Рис. 2.3. окно «Написать сообщение»
2.6. Описание основных классов и методов приложения
Рис. 3.1. «Диаграмма классов»
Класс POP3
Класс POP3, также как и одноименный протокол используется для извлечения сообщений с почтового сервера. Данный класс наследуется от System.Net.Sockets.TcpClient реализованного в VS 2008.
Класс содержит несколько методов:
· ConnectPOP — используется для установки соединения с сервером;
· DisconnectPOP — закрывает соединение с сервером;
· ListMessages — получаем список сообщений с сервера;
· RetriveMessage — получение сообщения с сервера;
· DeleteMessage — удаление сообщения на сервере;
· Write — принимает сообщение на входе и записывает его в сетевой поток TCP;
· Response — метод обратный от Write.
Класс SMTP
Класс SMTP как и одноименный протокол обеспечивает отправку сообщений.
Содержит метод SendMail, который обеспечивает отправку сообщения по протоколу SMTP.
Класс Form1
Класс Form1 обеспечивает интерфейс главного окна программы, а также обеспечивает функциональность сохранения и отображения принятых сообщений.
Основные методы:
· LoadProfile — загрузка файла профиля почтового ящика;
· ReadMess — чтение сообщения из файла;
· FileCreate — сохранение почтового сообщения;
· ListMess — загрузка сообщений в элемент ListView;
· ItemsAdd — добавление новых сообщений в элемент ListView;
Класс FormSettings
Класс FormSettings обеспечивает интерфейс окна настроек почтового ящика, а также обеспечивает сохранение этих настроек в файл профиля.
Основные методы:
· LoadProfile — загрузка файла профиля почтового ящика;
· EditProfile — сохранение изменений профиля почтового ящика;
3. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ
Запуск программы осуществляется с помощью запуска файла Mail client. sln из среды разработки «MVS-2008».
Вверху окна расположены кнопки главного меню (рис. 3.5.1). Ниже расположено поле, в которое загружается список полученных писем. В самое нижнее поле загружается текст письма.
Результатом нажатия на меню «Получить почту», будет загрузка входящих писем в верхнее поле. Результатом нажатия на любое письмо, будет загрузка текста письма в нижнее поле. Для отправки письма нужно загрузить окно «Написать письмо» (рис 3.5.3) в меню файл. Результатом нажатия кнопки «SendMail» в окне «Написать письмо» будет отправка Эл. письма адресату. Результатом нажатия кнопки «выход» в меню «файл», будет выход из программы.
ЗАКЛЮЧЕНИЕ
Результатом выполнения курсовой работы на тему «Разработка приложения-клиента электронной почты» стала программа, содержащая в себе методы реализации протоколов электронной почты POP3 и SMTP, так как, все современные почтовые сервера используют эти протоколы, а также методы отправки и приема писем. Программа представляет собой удобный пользовательский интерфейс, интуитивно понятный для любого пользователя, программе не требуется установка, что позволяет использовать программу с любых носителей информации.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Герберт Шилдт «Полный справочник по C++», 2004 г.
2. Лабор В. В «Создание приложений для Windows», 2003 г.
3. Агуров П. В «Разработка компонентов в MS Visual Studio», 2008 г.
4. Э. Кровчик, В. Кумар, Н. Логари, А. Мунгале, К. Нагел, Т. Паркер, Ш. Шивакумар «NET сетевое программирование для профессионалов», 2005 г.
ПРИЛОЖЕНИЕ 1
Form1.cs
namespace Mail_client
{
public partial class Form1 : Form
{
private string dir;
public static int countMesStart;
public static int countMes=0;
public static string sServerName ;
public static string sUserName;
public static string sPassword;
public static string SMTPserver;
private FormSettings fset= new FormSettings();
private FormNewMess fnewmess = new FormNewMess();
public Form1()
{
InitializeComponent ();
this.ShowInTaskbar = false;
dir = Directory.GetCurrentDirectory ();
ItemsAdd ();
LoadProfile ();
}
public string LoadProfile () //загрузка файла профиля
{
FileStream fs = new FileStream(dir+" \messages\profile\porfile.txt" ,
FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string CurLine;
int i = 0;
while
((CurLine = sr. ReadLine ()) ≠ null)
{
i++;
if(i==1)
countMes = Convert.ToInt32(CurLine);
if (i == 2)
{
sServerName = CurLine;
}
if (i == 3)
sUserName = CurLine;
if (i == 4)
sPassword = CurLine;
if (i == 4)
SMTPserver = CurLine;
}
countMesStart = countMes;
fs.Close ();
sr.Close ();
return CurLine;
}
public string ReadMess (string num, int c) //чтение сообщения
{
String fil="" ;
if (c==2)
fil = «» ;
if (c == 1)
fil = «.txt» ;
FileStream fs = new FileStream(dir+" \messages" + num + fil,
FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string CurLine="" ;
CurLine = sr. ReadToEnd ();
fs.Close ();
sr.Close ();
return CurLine;
}
public void Get () //получение сообщений с сервера
{ string content;
POPException.POP3 oPOP = new POPException.POP3();
oPOP.ConnectPOP (sServerName, sUserName, sPassword);
ArrayList MessageList= oPOP. ListMessages ();
foreach (POPException.POP3EmailMessage POPMsg in MessageList)
{
POPException.POP3EmailMessage POPMsgContent= oPOP. RetriveMessage (POPMsg);
content= POPMsgContent. msgContent;
string filename = Theme (content);
FileCreate (filename, content);
// richTextBox2. Text += content;
ItemsAdd ();
}
oPOP.DisconnectPOP ();
}
public string Theme (string content) //процедура получения темы сообщения
{
string resultValue="" ;
char m='r' ;
int i = content. LastIndexOf («Subject:»);
i += 9;
for ( char c=content[i]; content[i]≠m; i++)
{
c = content[i];
resultValue +=c;
}
return resultValue;
}
public string FromMess (string content) //получение поля ОТ
{
string resultValue = «» ;
char m = 'r';
int i = content. IndexOf («From:»);
i+=6;
for (char c = content[i]; content[i] ≠ m; i++)
{
c = content[i];
resultValue += c;
}
return resultValue;
}
public string ToMess (string content) //получения поля кому
{
string resultValue = «» ;
char m = 'r';
int i = content. IndexOf («nTo:»);
i += 4;
for (char c = content[i]; content[i] ≠ m; i++)
{
c = content[i];
resultValue += c;
}
return resultValue;
}
public void FileCreate (string filename,string content) //процедура создания файла
{
countMes++;
FileStream myStream=File.Create (dir+" \messages" +countMes+" .txt");
int z = content. Length;
for ( int i=0; i < z; i++)
{
char c = content[i];
myStream.WriteByte ((byte)c);
}
myStream.Close ();
}
public void ListMess (string num,string theme, string from) // добавление сообщений в листвью
{
ListViewItem lvi = new ListViewItem((listView1.Items.Count + 1).ToString ());
lvi.SubItems.Add (theme);
lvi.SubItems.Add (from);
listView1.Items.Add (lvi);
}
public void ItemsAdd ()// Добавление новых сообщений
{string strin="" ;
// listBox1.Items.Clear ();
listView1.Items.Clear ();
//char c;
string[] contents = System.IO.Directory.GetFileSystemEntries (dir + @" messages");
foreach (string s in contents)
{
if ((s.IndexOf («profile») == -1))
{
for (int z = s. LastIndexOf («»)+1; z < s. Length; z++)
{
char c = s[z];
strin += c;
}
string content=ReadMess (strin, 2);
string from = FromMess (content);
ListMess (strin, Theme (content), from);
// listBox1.Items.Add (strin);
strin = «» ;
}
}
}
public string ShowMes () //процедура показа выделенного сообщения
{
string resultValue = «» ;
if (listView1.SelectedItems.Count == 0)
return resultValue ;
string x = listView1. SelectedItems[0]. Text;
string content = ReadMess (listView1.SelectedItems[0]. Text, 1);
// ListMess (x, Theme (content), FromMess (content));
Them.Text = Theme (content);
From.Text = FromMess (content);
To.Text = ToMess (content);
char m = 'n';
char z = '0';
int i = content. LastIndexOf («Content-Transfer-Encoding:»);
i += 9;
while (content[i] ≠ m)
i++;
for (char c = content[i+1]; i < (content.Length); i++)
{
c = content[i];
resultValue += c;
}
return resultValue ;
}
private void listBox1_SelectedIndexChanged (object sender, EventArgs e)
{
string content = ShowMes ();
richTextBox3.Text = content;
}
private void настройкиЯщикаToolStripMenuItem_Click (object sender, EventArgs e) //показ формы настройки ящмка
{
fset.ShowDialog (this);
}
private void mnuShow_Click (object sender, EventArgs e) //отображение главной формы
{
//Включаем отображения приложения на панели задач при запуске
this.ShowInTaskbar = true;
//Показываем форму
this.Show ();
timer1.Enabled = false;
notifyIcon1.Icon =new Icon(dir+@" messagesprofileFolder1. ico");
//Отключаем доступность пункта меню mnuShow
mnuShow.Enabled = false;
//Включаем доступность пункта меню mnuHide
mnuHide.Enabled = true;
//Переменной Hidden устанавливаем значение false
}
private void mnuHideToolStripMenuItem_Click (object sender, EventArgs e)//сворачивание главной формы в трей
{
this.ShowInTaskbar = false;
this.Hide ();
mnuShow.Enabled = true;
mnuHide.Enabled = false;
timer1.Enabled = true;
}
private void notifyIcon1_DoubleClick (object sender, EventArgs e) //открытие формы по щелчку на иконке в трее
{
mnuShow_Click (this, new EventArgs());
}
private void Form1_FormClosing (object sender, FormClosingEventArgs e) //закрытие главной формы
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
this.Hide ();
mnuShow.Enabled = true;
mnuHide.Enabled = false;
timer1.Enabled = true;
}
}
private void выходToolStripMenuItem_Click (object sender, EventArgs e) // процедура выхода из программы
{
notifyIcon1.Visible = false;
this.ShowInTaskbar = false;
this.Hide ();
listView1.Items.Clear ();
Application.Exit ();
}
private void написатьПисьмоToolStripMenuItem_Click (object sender, EventArgs e)//показ формы Нового сообщения
{
fnewmess.ShowDialog (this);
private void timer1_Tick (object sender, EventArgs e) //таймер отвечает за проверку сообщений по времени
{
Get ();
if (countMesStart < countMes)
{
notifyIcon1.Icon = new Icon(dir + @" messagesprofileNotePad. ico");
}
}
private void listView1_ItemActivate (object sender, EventArgs e)//изменение выброного сообщения
{
string content = ShowMes ();
richTextBox3.Text = content;
}
private void получитьПочтуToolStripMenuItem_Click (object sender, EventArgs e)
{
Get ();
}
private void Form1_Deactivate (object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
this.Hide ();
mnuShow.Enabled = true;
mnuHide.Enabled = false;
timer1.Enabled = true;
}
}
private void Form1_Activated (object sender, EventArgs e)
{
if (WindowState == FormWindowState.Normal)
{
this.ShowInTaskbar = true;
//Показываем форму
this.Show ();
timer1.Enabled = false;
mnuShow.Enabled = false;
mnuHide.Enabled = true;
notifyIcon1.Icon = new Icon(dir + @" messagesprofileFolder1. ico");
}
}
}
}
Program.cs
namespace Mail_client
{
namespace POPException
{
public class POPException : System.ApplicationException
{
public POPException (string str)
: base(str)
{
}
}
static class Program
{
static Form1 frm = null;
public static Form1 MainForm { get { return frm; } }
/// The main entry point for the application.
[STAThread]
static void Main ()
{
Application.EnableVisualStyles ();
Application.SetCompatibleTextRenderingDefault (false);
Application.Run (frm = new Form1());
}
}
public class POP3EmailMessage //класс описывающий emailMessage
{
public long msgNumber;
public long msgSize;
public bool msgReceived;
public string msgContent;
}
public class SMTP
{
public void SendMail (string sSMTPServer, string sFrom, string sTo, string sSubject, string sBody)//класс SMTP отвечающий за отправку сообщений
{
SmtpClient client = new SmtpClient(sSMTPServer, 25);
client.Credentials = new NetworkCredential(Form1.sUserName, Form1.sPassword);
MailMessage message = new MailMessage(Form1.sUserName, sTo, sSubject, sBody);
client.Send (message);
}
}
public class POP3 : System.Net.Sockets.TcpClient // Класс POP3 отвечающий за доставку смс сообщений
{
public void 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»)
throw new POPException(sResult);
//отправляем имя пользователя
sMessages = «USER «+ sUserName + «rn» ;
Write (sMessages);
sResult = Response ();
//проверка ответа
if (sResult.Substring (0, 3) ≠ «+OK»)
throw new POPException(sResult);
//отправляем пароль
sMessages = «PASS «+ sPassword + «rn» ;
Write (sMessages);
sResult = Response ();
//проверка ответа
if (sResult.Substring (0, 3) ≠ «+OK»)
throw new POPException(sResult);
}
public void DisconnectPOP () //отсоединение от POP сервера
{
string sMessage;
string sResult;
sMessage = «QUITrn» ;
Write (sMessage);
sResult = Response ();
//проверка ответа
if (sResult.Substring (0, 3) ≠ «+OK»)
throw new POPException(sResult);
}
public ArrayList ListMessages () //получение списка сообщений с сервера
{
string sMessage;
string sResult;
ArrayList returnValue = new ArrayList();
sMessage = «LISTrn» ;
Write (sMessage);
sResult = Response ();
//проверка ответа
if (sResult.Substring (0, 3) ≠ «+OK»)
throw new POPException(sResult);
while (true)
{
sResult = Response ();
if (sResult == «.rn»)
{
// Program.MainForm.Add (returnValue);
return returnValue;
}
else
{
POP3EmailMessage oMailMessage = new POP3EmailMessage();
//Определяем разделитель
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;
}
}
}
public POP3EmailMessage RetriveMessage (POP3EmailMessage msgRETR) //доставка сообщений с POP сервера
{
string sMessage;
string sResult;
POP3EmailMessage oMailMessage = new POP3EmailMessage();
oMailMessage.msgNumber = msgRETR. msgNumber;
oMailMessage.msgSize = msgRETR. msgSize;
//для получения соответсвующего сообщения посылаем RETR
sMessage = «RETR «+ msgRETR. msgNumber + «rn» ;
Write (sMessage);
sResult = Response ();
if (sResult.Substring (0, 3) ≠ «+OK»)
throw new POPException(sResult);
//поскольку сообщение получено устанавливаем во флаге true
oMailMessage.msgReceived = true;
while (true)
{
sResult = Response ();
if (sResult == «.rn»)
break;
else
oMailMessage.msgContent += sResult;
}
string content = oMailMessage. msgContent;
return oMailMessage;
}
public void DeleteMessage (POP3EmailMessage msgDELE) //удаление сообщений с POP сервера
{
string sMessage;
string sResult;
sMessage = «DELE» + msgDELE. msgNumber + «rn» ;
Write (sMessage);
sResult = Response ();
if (sResult.Substring (0, 3) ≠ «+OK»)
throw new POPException(sResult);
}
private void Write (string sMessage)
{//используется для перекодирования данных
System.Text.ASCIIEncoding oEncodeData = new System.Text.ASCIIEncoding();
//теперь пересылаем сообщение в буфер для отправки в сетевой поток TCP
byte[] WriteBuffer = new byte[1024];
WriteBuffer = oEncodeData. GetBytes (sMessage);
//выводим содержимое буффера в поток TCP
NetworkStream NetStream = GetStream ();
NetStream.Write (WriteBuffer, 0, WriteBuffer. Length);
}
private string Response () //перекодировка сообщений
{
System.Text.ASCIIEncoding oEncodedData = new System.Text.ASCIIEncoding();
byte[] ServerBuffer = new Byte[1024];
NetworkStream NetStream = GetStream ();
int count = 0;
while (true)
{
byte[] buff = new Byte[2];
int bytes = NetStream. Read (buff, 0, 1);
if (bytes == 1)
{
ServerBuffer[count] = buff[0];
count++;
if (buff[0] == 'n')
break;
}
else break;
}
string ReturnValue = oEncodedData. GetString (ServerBuffer, 0, count);
return ReturnValue;
}
}
}
}
FormSettings.cs
namespace Mail_client
{
public partial class FormSettings : Form
{
private string dir1;
public FormSettings ()
{
InitializeComponent ();
dir1=Directory.GetCurrentDirectory ();
LoadProfile ();
}
public string LoadProfile () //считывание файла профиля
{
FileStream fs = new FileStream(dir1+ «\messages\profile\porfile.txt» ,
FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(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;
}
public void EditProfile () // изменение профиля почтового ящика
{
StreamWriter sw = new StreamWriter(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 ();
}
private void Cancel_Click (object sender, EventArgs e) //отмена
{
this.Hide ();
}
private void FormSettings_FormClosing (object sender, FormClosingEventArgs e) //при закрытии формы
{ //отменятся все изменения и форма скрывается
e.Cancel = true;
this.Hide ();
}
private void Save_Click1(object sender, EventArgs e) //сохранение профиля
{
EditProfile ();
}
private void Ok_Click (object sender, EventArgs e) //при нажатии клавиши Ок сохраняется профиль
{//и форма сворачивается
EditProfile ();
this.Hide ();
}
}
}