Sunteți pe pagina 1din 10

Universitatea Tehnic a Moldovei Catedra Automatic i Tehnologii Informaionale

Disciplina:PPC

AP! T "ucrare de la#orator $r%& Tema:

A efectuat : A verificat:

studentul grupei TI' lector

Chiinu ()&)

1 Scopul lucrrii
*tudierea protocoalelor *MTP+ P!P, si crearea unei aplicatii MailClient%

2 Sarcina lucrrii
*a se cree-e o aplicatie MailClient+ care ar reali-a legtura cu serverul *MTP pentru e.pedierea mesa/elor si cu serverul P!P, pentru verificarea mesa/elor de intrare%

3 Noiuni teoretice
0'mail'ul este un mesa/ 1ntr'o singur directie si nu este garantat livrarea lui+ pentru a re-olva aceast pro#lem a fost inventat protocolul *MTP 2*imple Mail Transport Protocol3 si mecanismele lui de notificare+ D*$ 2Deliver4 *tatus $otification3 si MD$ 2Message Disposition $otification3% Aceste notificri sunt transmise su# form de mesa/e adresei specificate 1n header'ul mesa/ului% Comen-ile *MTP: a3 50"! 6 se foloseste pentru identificarea clientului *MTP de ctre server% #3 MAI" 6 initiali-ea- transmiterea unei scrisori serverului *MTP+ care+ la r7ndul lui+ are gri/ de transferul mai deprate a mesa/ului% c3 e3 CPT 6 identific fie un singur destinatar sau mai multi prin repetarea comen-ii% *0T 6 anulea- transmiterea mesa/ului% d3 DATA 6 repre-int 1nssi continutul mesa/ului si se finali-ea- cu <CRLF>.<CRLF>% f3 8 9: 6 cere confirmarea c argumentul identific un utili-ator sau o cutie postal% g3 0;P$ 6 cere confirmarea c argumentul identific o list de discutii% h3 50"P 6 cere serverului informatii de a/utor+ cum ar fi informatii despre comen-i% i3 $!!P 6 nu are nici un efect+ ci doar cere destinatarului sa trimit un rspuns 250 OK% /3 <UIT 6 spune destinatarului s trimit un rspuns 221 OK+ apoi s 1nchid canalul de transmisiune% Protocolul P!P, 2Post !ffice Protocol 6 8ersion ,3 este un protocol de accesare a cutiilor postale% Conectarea la serverul P!P, se face prin intermediul portului &&)% Pentru a accesa serverul+ clientul tre#uie s sta#ileasc o legtur TCP 2Transmission Control Protocol3 cu el% Comen-ile acestui protocol se sf7rsesc cu perechea C "9 2Carriage eturn and "ine 9eed3% Unele dintre comen-ile P!P,: a3 U*0 6 transmite serverului numele utili-atorului% #3 PA** 6 transmite serverului parola asociat cu utili-atorul% c3 *TAT 6 cere numrul de scrisori si volumul acestora% d3 "I*T 6 cere lista mesa/elor din cutia postal% e3 0T 6 cere mesa/ul cu identificatorul specificat% f3 D0"0 6 marcheaz mesa/ul pentru stergere%
(

g3

*0T 6 anulea- marcarea mesa/ului pentru stergere%

h3 <UIT 6 1ncheie cone.iunea TCP%

4 Efectuarea programului (SMTP si POP3) 9unciile principale ale programului


=n 9igura & avem diagrama interactiunii utili-atorilor cu sistemul si serverele *MTP si P!P, 1ntre ele:

9ig% & 6 Diagrama U*0'CA*0 a interactiunii sistemului cu serverul *MTP si P!P,% Ca orice protocol pe #a- client>server+ pentru a #eneficia de serviciile mail oferite de protocoalele *MTP si P!P,+ utili-atorul are nevoie de un program client care se poate conecta la server si de nume de utili-ator si parol pentru autentificare% =n 9igura ( avem repre-entate secventele de actiuni 1ntreprinse de utili-ator fie pentru a scrie sau a citi un mesa/:

Utilizator

Server POP3

Server SMTP

Destinatar

Conectare

Autentificare Cere transmiterea unui mesaj Transmite mesajul

Deconectare Conectare Autentificare Citirea mesajelor Stergerea mesajelor din cutia postala

Deconectare

9igura ( 6 Interactiunea dintre utili-ator si serverele *MTP si P!P,

!e"ultatele programului
=n 9igura , putem o#serva cum are loc transmiterea mesa/ului cu a/utorul protocolului *MTP%

9ig%, 6 ularea aplicatie% Transmiterea mesa/ului cu a/utorul protocolului *MTP% Introduc1nd datele25ost'ul+ from i to3+ trimitem datele la server% Dup aceea 2dac datele introduse sunt corecte3 *erverul va trimite mesa/ul la utili-atorul specificat% In figura ? vom pre-anta conectarea la serverul P!P, si citirea mesa/elor trimise%

9igura ?% Citirea mesa/elor cu a/utorul protocolului P!P,% Pentru a ne putea conecta+ tre#uie sa introducem 5ost'ul+ user'ul si parola pentru autentificare% Daca parametri specificati sunt introdusi corect+ atunci putem citi mesa/ele trimise%

9ig%A 6 =nregistrarea aciunilor efectuate de ctre utili-atori

#onclu"ie
0fectu7nd lucrarea dat m'am familiari-at cu protocoalele *MTP si P!P,+ cu comen-ile acestora si modul de implementare a lor+ respectiv+ acest lucru mi'a permis s ela#ore- o aplicatie client% eali-ind acesta aplicatie am gasit niste mici nea/unsuri cum ar fi posi#ilitatea de a e.pedia scrisori anonime sau din numele altor persoane% Un alt protocol pe care lam studiat 1n aceast lucrare este P!P,% *pre deose#ire de IMAP+ care pstrea- mesa/ele pe un server+ P!P, le pstrea- 1ntr'o map local+ 1ns acest lucru nu e at7t de convena#il 1n utili-rii a mai multor computer%

$ne%a $

#o&ul surs
Program%cs:
using using using using System; System.Collections.Generic; System.Linq; System.Windows.Forms;

namespace Laboratorul3SIPC static class Program !!! "summary# !!! $%e main entry point &or t%e application. !!! "!summary# 'S$($%read) static *oid +ain,(pplication..nable/isualStyles,-; (pplication.SetCompatible$e0t1endering2e&ault,&alse-; (pplication.1un,new Form3,--;

4 4 4

using System; using System.Collections.Generic; using System.Component+odel; using System.2ata; using System.2rawing; using System.Linq; using System.$e0t; using System.Windows.Forms; using System.5et.+ail; using System.5et; using System.5et.Soc6ets; using System.I7; using System.5et.+ime; namespace Laboratorul3SIPC public partial class Form3 8 Form public Form3,Initiali9eComponent,-; 4 int at : ;; public SmtpClient client; public +ail+essage message; Content2isposition disposition; pri*ate *oid button3<Clic6,ob=ect sender> .*ent(rgs etry client : new SmtpClient,te0t?o03.$e0t> @A-; message : new +ail+essage,te0t?o0@.$e0t> te0t?o03.$e0t-; message.Sub=ect : te0t?o0B.$e0t; message.?ody : te0t?o0A.$e0t; i& ,at :: 3A

9orm&%cs:

disposition : data.Content2isposition; disposition.Creation2ate : System.I7.File.GetCreation$ime,&ileIn&.5ame-; disposition.+odi&ication2ate : System.I7.File.GetLastWrite$ime,&ileIn&.5ame-; disposition.1ead2ate : System.I7.File.GetLast(ccess$ime,&ileIn&.5ame-; message.(ttac%ments.(dd,data-; 4 client.Send,message-; 4 catc% ,.0ception e0+essage?o0.S%ow,e0.+essage-; 4 5etwor6Stream netStream; pri*ate *oid toolStrip?utton3<Clic6,ob=ect sender> .*ent(rgs e$cpClient client : new $cpClient,toolStrip$e0t?o03.$e0t> 33;-; netStream : client.GetStream,-; Stream1eader reader : new Stream1eader,netStream-; reader.1eadLine,-; byte') byteCmd : (SCII.ncoding.(SCII.Get?ytes,CDser C E toolStrip$e0t?o0@.$e0t E CFrFnC-; netStream.Write,byteCmd> ;> byteCmd.Lengt%-; reader.1eadLine,-; byteCmd : (SCII.ncoding.(SCII.Get?ytes,CPass C E toolStrip$e0t?o03.$e0t E CFrFnC-; netStream.Write,byteCmd> ;> byteCmd.Lengt%-; reader.1eadLine,-; byteCmd : (SCII.ncoding.(SCII.Get?ytes,Clist FrFnC-; netStream.Write,byteCmd> ;> byteCmd.Lengt%-; reader.1eadLine,-; string item; list?o03.Items.Clear,-; w%ile ,,item : reader.1eadLine,-- G: C.Clist?o03.Items.(dd,item-; 4 int nr : list?o03.Items.Count; &or ,int i : 3; i ": nr; iEESystem.I7.StreamWriter streamWriter : null; streamWriter : System.I7.File.Create$e0t,C&ileC E i E C.t0tC-; byteCmd : (SCII.ncoding.(SCII.Get?ytes,Cretr C E i E CFrFnC-; netStream.Write,byteCmd> ;> byteCmd.Lengt%-; w%ile ,,item : reader.1eadLine,-- G: C.CstreamWriter.Write,item-; streamWriter.Write,CFrFnC-; 4 streamWriter.Close,-; 4 4 reader.Close,-; D 4

pri*ate *oid button@<Clic6,ob=ect sender> .*ent(rgs e$cpClient client : new $cpClient,toolStrip$e0t?o03.$e0t> 33;-; netStream : client.GetStream,-; Stream1eader reader : new Stream1eader,netStream-; reader.1eadLine,-; byte') byteCmd : (SCII.ncoding.(SCII.Get?ytes,CDser C E toolStrip$e0t?o0@.$e0t E CFrFnC-; netStream.Write,byteCmd> ;> byteCmd.Lengt%-; reader.1eadLine,-; byteCmd : (SCII.ncoding.(SCII.Get?ytes,CPass C E toolStrip$e0t?o03.$e0t E netStream.Write,byteCmd> ;> byteCmd.Lengt%-; reader.1eadLine,-; int i : list?o03.SelectedInde0 E 3; byteCmd : (SCII.ncoding.(SCII.Get?ytes,Cdele C E i E CFrFnC-; netStream.Write,byteCmd> ;> byteCmd.Lengt%-; list?o03.Items.1emo*e(t,i H 3-; 4 pri*ate *oid Form3<Load,ob=ect sender> .*ent(rgs e,toolStrip$e0t?o03.$e0t?o0 as $e0t?o0-.PasswordC%ar : IJI; 4 pri*ate *oid list?o03<SelectedInde0C%anged,ob=ect sender> .*ent(rgs eint i : list?o03.SelectedInde0 E 3; te0t?o0K.Clear,-; te0t?o0K.(ppend$e0t,i.$oString,--; string &ilePat% : LC&ileC E i E C.t0tC; string line; i& ,File..0ists,&ilePat%-Stream1eader &ile : null; try te0t?o0K.Clear,-; &ile : new Stream1eader,&ilePat%-; w%ile ,,line : &ile.1eadLine,-- G: nullte0t?o0K.(ppend$e0t,line-; te0t?o0K.(ppend$e0t,CFrFnC-; 4 4 &inally i& ,&ile G: null&ile.Close,-; 4 4 4 4 4

CFrFnC-;

&)

S-ar putea să vă placă și