Смекни!
smekni.com

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

ЗАКЛЮЧЕНИЕ

Результатом выполнения курсовой работы на тему «Разработка приложения-клиента электронной почты» стала программа, содержащая в себе методы реализации протоколов электронной почты POP3 и SMTP, так как, все современные почтовые сервера используют эти протоколы, а также методы отправки и приема писем. Программа представляет собой удобный пользовательский интерфейс, интуитивно понятный для любого пользователя, программе не требуется установка, что позволяет использовать программу с любых носителей информации.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Герберт Шилдт «Полный справочник по C++», 2004 г.

2. Лабор В.В «Создание приложений для Windows», 2003 г.

3. Агуров П.В «Разработка компонентов в MS Visual Studio», 2008 г.

4. Э.Кровчик, В.Кумар, Н.Логари, А.Мунгале, К.Нагел, Т.Паркер, Ш.Шивакумар «NET сетевое программирование для профессионалов»,2005г.

ПРИЛОЖЕНИЕ 1

Form1.cs

namespace Mail_client

{

public partial classForm1 : 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;

privateFormSettings fset= newFormSettings();

private FormNewMess fnewmess = newFormNewMess();

public Form1()

{

InitializeComponent();

this.ShowInTaskbar = false;

dir = Directory.GetCurrentDirectory();

ItemsAdd();

LoadProfile();

}

public string LoadProfile() //загрузка файла профиля

{

FileStream fs = newFileStream(dir+"\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)

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 = newStreamReader(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;

}

publicstring 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;

}

publicvoid 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();

}

publicvoid ListMess(string num,string theme, string from) // добавление сообщений в листвью

{

ListViewItem lvi = newListViewItem((listView1.Items.Count + 1).ToString());

lvi.SubItems.Add(theme);

lvi.SubItems.Add(from);

listView1.Items.Add(lvi);

}

publicvoid ItemsAdd()// Добавление новых сообщений

{string strin="";

// listBox1.Items.Clear();

listView1.Items.Clear();

//char c;

string[] contents = System.IO.Directory.GetFileSystemEntries(dir + @"&bsol;messages&bsol;");

foreach (string s in contents)

{

if ((s.IndexOf("profile") == -1))

{

for (int z = s.LastIndexOf("&bsol;")+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 = "";

}

}

}

publicstring 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 = '&bsol;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 ;

}

privatevoid listBox1_SelectedIndexChanged(object sender, EventArgs e)

{

string content = ShowMes();

richTextBox3.Text = content;

}

privatevoid настройкиЯщикаToolStripMenuItem_Click(object sender, EventArgs e) //показ формы настройки ящмка

{

fset.ShowDialog(this);

}

privatevoid mnuShow_Click(object sender, EventArgs e) //отображение главной формы

{

//Включаем отображения приложения на панели задач при запуске

this.ShowInTaskbar = true;

//Показываем форму

this.Show();

timer1.Enabled = false;

notifyIcon1.Icon =newIcon(dir+@"&bsol;messages&bsol;profile&bsol;Folder1.ico");

//Отключаем доступность пункта меню mnuShow

mnuShow.Enabled = false;

//Включаем доступность пункта меню mnuHide

mnuHide.Enabled = true;

//Переменной Hidden устанавливаем значение false

}

privatevoid mnuHideToolStripMenuItem_Click(object sender, EventArgs e)//сворачивание главной формы в трей

{

this.ShowInTaskbar = false;

this.Hide();

mnuShow.Enabled = true;

mnuHide.Enabled = false;

timer1.Enabled = true;

}

privatevoid notifyIcon1_DoubleClick(object sender, EventArgs e) //открытие формы по щелчку на иконке в трее

{

mnuShow_Click(this, newEventArgs());

}

privatevoid 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;

}

}

privatevoid выходToolStripMenuItem_Click(object sender, EventArgs e) // процедура выхода из программы

{

notifyIcon1.Visible = false;

this.ShowInTaskbar = false;

this.Hide();

listView1.Items.Clear();

Application.Exit();

}

privatevoid написатьПисьмоToolStripMenuItem_Click(object sender, EventArgs e)//показ формы Нового сообщения

{

fnewmess.ShowDialog(this);

privatevoid timer1_Tick(object sender, EventArgs e) //таймер отвечает за проверку сообщений по времени

{

Get();

if (countMesStart < countMes)

{

notifyIcon1.Icon = newIcon(dir + @"&bsol;messages&bsol;profile&bsol;NotePad.ico");

}

}

privatevoid listView1_ItemActivate(object sender, EventArgs e)//изменение выброного сообщения

{

string content = ShowMes();

richTextBox3.Text = content;

}

privatevoid получитьПочтуToolStripMenuItem_Click(object sender, EventArgs e)

{

Get();

}

privatevoid Form1_Deactivate(object sender, EventArgs e)

{

if (WindowState == FormWindowState.Minimized)

{

this.ShowInTaskbar = false;

this.Hide();

mnuShow.Enabled = true;

mnuHide.Enabled = false;

timer1.Enabled = true;

}

}

privatevoid 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 = newIcon(dir + @"&bsol;messages&bsol;profile&bsol;Folder1.ico");

}

}

}

}

Program.cs

namespace Mail_client

{

namespace POPException

{

publicclassPOPException : System.ApplicationException

{

public POPException(string str)

: base(str)

{

}

}

staticclassProgram

{

staticForm1 frm = null;

publicstaticForm1 MainForm { get { return frm; } }

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

staticvoid Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(frm = newForm1());

}

}

publicclassPOP3EmailMessage //класс описывающий emailMessage

{

publiclong msgNumber;

publiclong msgSize;

publicbool msgReceived;

publicstring msgContent;

}

publicclassSMTP

{

publicvoid SendMail(string sSMTPServer, string sFrom, string sTo, string sSubject, string sBody)//класс SMTP отвечающий за отправку сообщений