MINISTERUL MINISTERUL EDUCA EDUCAȚIEI al REPUBL REPUBLICII ICII MOLDOV MOLDOVA UNIVERSITA UNIVERSI TATEA TEA TEHNICĂ a MOLDOVEI MO LDOVEI FACULTA FACULTATEA CALCULAT CALCU LATOARE, OARE, INFORM INF ORMAT ATICĂ ICĂ și MICROELECTRONICĂ
CAT CATEDRA AUTOMA AUTOMAT TICĂ și TEHNOL TEHNOLOGII OGII INFORMA INFORMA ȚIONALE IONALE
Proiect de curs Disciplina: APPOO
Tema: Elaborarea Elaborarea și proiectare proiectarea a unui Mail Client Client
A efectuat: efectu at:
t! "#! SI$%%% Cu#ec&i A'#ia(
A )e#ificat:
lect!u*! P+ta#u A!
C&i C&iși(u i(u -. -.%/ %/
Cu#ec&i A'#ia( SI$%%%
Cuprins I(t#+'uce#e!!!!!!!!!!!!!!!!!!!!!!!!!!! I(t#+'uce#e!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0 !!!!!!!!!!!!!!!!!!!!!0 %! Sa#ci(a te&(ic a ite1ului!!! ite1ului!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!!/ !!!!!/ -! Ela2+#a#ea Ela2+#a#ea 'ia"#a1el+# 'ia"#a1el+# UML!!!!!! UML!!!!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!3 !!!!3 -!%! Ela2+#a#ea Ela2+#a#ea 'ia"#a1el+# 'ia"#a1el+# ca4u#il+# ca4u#il+# 'e utili4a#e!!!! utili4a#e!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!!!!3 !!!!!!3 -!-! Ela2+#a#ea Ela2+#a#ea 'ia"#a1el+# 'ia"#a1el+# 'e cla!!!!!! cla!!!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!!!!! !!!!!!!!!!!!!! !!!!!!!!!!!!!5 !!!!!!5 -!0! Ela2+ 2+##a#ea #ea 'ia 'ia""#a1 #a1el+# l+# 'e 'e e ec)e )e((ț!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6 -!/! -!/! Ela2 Ela2++#a#e #a#eaa 'ia"# ia"#a1 a1el el+# +# 'e acti acti)i )it tți!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%-!3! Ela2+#a#ea Ela2+#a#ea 'ia"#a1el+# 'ia"#a1el+# 'e t#i!!!!!! t#i!!!!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!!!!! !!!!!!!!!!!!!! !!!!!!!!%0 !%0 -!7! -!7! Ela2+# Ela2+#a#ea a#ea 'ia"#a1 'ia"#a1el+# el+# 'e c+1*+( c+1*+(e(te e(te!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!!! !!!!!!! !!!!!!! !!!!!!! !!!!!!! !!!!!!!! !!!!!!! !!!!!!! !!!!!!! !!!!!!%/ !!!%/ 0! I(te# te#fața ite ite1 1ului lui!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!%3 !!!!!!!!!!!!!!%3 C+(clu4ie!!!!!!!!!!!!!!!!!!!!!!!!!!! C+(clu4ie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%5 !!!!!!!!!!!!!!!!!!!!!!%5 Bi2li+"#afie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Bi2li+"#afie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!%6 !!!!!!!!!!!!!!!%6 A(e8a A 9 SMTPClie(t!c!!!!!!!!!!!!!!!!!!!!!!!!!!!! SMTPClie(t!c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-. !!!!!!!!!!!!!!!!!!!!-. A(e8a B 9 IMAPClie(t!c!!!!!!!!!!!!!!!!!!!!!!!!!!!! IMAPClie(t!c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-!!!!!!!!!!!!!!!!!!!!-A(e8a C 9 T++l!c!!!!!!!!!!!!!!!!!!! ++l!c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!-7 A(e8a D 9 F+#1%!c!!!!!!!!!!!!!!!!!!!!!!!!! F+#1%!c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-6 !!!!!!!!!!!!!!!!!!!!-6
-
Cu#ec&i A'#ia( SI$%%%
Cuprins I(t#+'uce#e!!!!!!!!!!!!!!!!!!!!!!!!!!! I(t#+'uce#e!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0 !!!!!!!!!!!!!!!!!!!!!0 %! Sa#ci(a te&(ic a ite1ului!!! ite1ului!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!!/ !!!!!/ -! Ela2+#a#ea Ela2+#a#ea 'ia"#a1el+# 'ia"#a1el+# UML!!!!!! UML!!!!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!3 !!!!3 -!%! Ela2+#a#ea Ela2+#a#ea 'ia"#a1el+# 'ia"#a1el+# ca4u#il+# ca4u#il+# 'e utili4a#e!!!! utili4a#e!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!!!!3 !!!!!!3 -!-! Ela2+#a#ea Ela2+#a#ea 'ia"#a1el+# 'ia"#a1el+# 'e cla!!!!!! cla!!!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!!!!! !!!!!!!!!!!!!! !!!!!!!!!!!!!5 !!!!!!5 -!0! Ela2+ 2+##a#ea #ea 'ia 'ia""#a1 #a1el+# l+# 'e 'e e ec)e )e((ț!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6 -!/! -!/! Ela2 Ela2++#a#e #a#eaa 'ia"# ia"#a1 a1el el+# +# 'e acti acti)i )it tți!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%-!3! Ela2+#a#ea Ela2+#a#ea 'ia"#a1el+# 'ia"#a1el+# 'e t#i!!!!!! t#i!!!!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!!!!! !!!!!!!!!!!!!! !!!!!!!!%0 !%0 -!7! -!7! Ela2+# Ela2+#a#ea a#ea 'ia"#a1 'ia"#a1el+# el+# 'e c+1*+( c+1*+(e(te e(te!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!! !!!!!!! !!!!!!! !!!!!!! !!!!!!! !!!!!!! !!!!!!!! !!!!!!! !!!!!!! !!!!!!! !!!!!!%/ !!!%/ 0! I(te# te#fața ite ite1 1ului lui!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!%3 !!!!!!!!!!!!!!%3 C+(clu4ie!!!!!!!!!!!!!!!!!!!!!!!!!!! C+(clu4ie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%5 !!!!!!!!!!!!!!!!!!!!!!%5 Bi2li+"#afie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Bi2li+"#afie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!%6 !!!!!!!!!!!!!!!%6 A(e8a A 9 SMTPClie(t!c!!!!!!!!!!!!!!!!!!!!!!!!!!!! SMTPClie(t!c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-. !!!!!!!!!!!!!!!!!!!!-. A(e8a B 9 IMAPClie(t!c!!!!!!!!!!!!!!!!!!!!!!!!!!!! IMAPClie(t!c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-!!!!!!!!!!!!!!!!!!!!-A(e8a C 9 T++l!c!!!!!!!!!!!!!!!!!!! ++l!c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!-7 A(e8a D 9 F+#1%!c!!!!!!!!!!!!!!!!!!!!!!!!! F+#1%!c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-6 !!!!!!!!!!!!!!!!!!!!-6
-
Cu#ec&i A'#ia( SI$%%%
I(t#+'uce#e! P#+"#a1a#ea +#ie(tat *e +2iecte OOP 9 O2;ect O#ie(te' P#+"#a11i("< ete te&(i te&(ica ca cea cea 1a 1aii utili utili4a 4at t =(ce =(ce*> *>(' (' cu =(ce* =(ce*utu utull a( a(il+ il+## ?6., ?6., c>(' c>(' *a *a#a #a'i" 'i"1e 1ele le ale ale *#i(ci*ale au f+t a'+*tate @i 'e4)+ltate @i 'e cele 1ai utili4ate li12a;e ale *e#i+a'ei #e*ecti)e: #e*ecti)e: C, Pacal, Baic, A'a, a)a, etc! C+(ce*tele 'e 2a4 ale OOP au f+t t+tu@i 'e4)+ltate =(c 'i( a(ii ?7., +'at cu *#+iecta#ea li12a;ului Si1ula7! P#+"#a1a#ea P#+"#a1a#ea +#ie(tat *e +2iect P#+"#a1a#e P#+"#a1a#e O#ie(tat O2iectual< ete u(ul 'i( cei 1ai i1*+#ta(i *a@i fcui =( e)+luia li12a;el+# 'e *#+"#a1a#e *#e + 1ai *ute#(ic a2t# a2 t#ac acti4 ti4a#e a#e =( i1*le i1*le1e 1e(ta (ta#e #eaa *#+" *#+"#a1 #a1el el+# +#!! Ea a a*#u a*#utt 'i( (e (ece ceita itatea tea e8 e8*#i *#i1 1#ii #ii *#+2le1ei =(t#$u( 1+' 1ai (atu#al fii(ei u1a(e! Atfel u(itile ca#e alctuiec u( *#+"#a1 e a*#+*ie 1ai 1ult 'e 1+'ul (+t#u 'e a ">('i 'ec>t 1+'ul 'e luc#u al calculat+#ului! P>( la a*a#iia *#+"#a1#ii +#ie(tate *e +2iect *#+"#a1ele e#au i1*le1e(tate =( li12a;e 'e *#+"#a1a#e *#+ce'u#ale C, Pacal< au =( li12a;e ca#e (ici 1ca# (u +fe#eau + 1+'alitate 1+'alitate 'e "#u*a#e "#u*a#e a i(t#uciu(il+# =( u(iti l+"ice fu(cii, *#+ce'u#i< *#+ce'u#i< cu1 ete ca4ul li12a;ului 'e aa12la#e ae12le#(' #>('u# u#ii atf atfel el =(c> =(c>tt e i'e( i'e(ti tifi fice ce ele1 ele1e( e(te tele le 'it 'iti( i(ct cte, e, i1*le1e(ta2ile =(t#$u( li12a; 'e *#+"#a1a#e! O 1a#e *#+2le1 a *#+"#a1#ii *#+ce'u#ale e#a e*a#a#ea 'atel+# 'e u(itile ca#e *#eluc#au 'atele u2#uti(ele<, ceea ce fcea f+a#te 'ificil e8ti('e#ea @i =(t#ei(e#ea u(ui *#+"#a1! Atfel $a *u *#+2le1a ca acete '+u e(titi 'ate @i u2#uti(e< fie "#u*ate =(t#$u( a(u1it 1+', atfel =(c>t u2#uti(ele @tie =( *e#1a(e( ce 'ate *#eluc#ea4 @i, 1ai 1ult 'ec>t at>t, ele f+#1e4e u( 1+'ul, a'ic + u(itate ca#e e*a# i1*le1e(ta#ea 'e i(te#fa, ceea ce i1*lic *+i2ilitatea #ef+l+i#ii c+'ului! • • •
• • • •
C+(ce*tele 'e 2a4 ale *#+"#a1#ii +#ie(tate *e +2iecte: +2iectul: + i(ta(ta a u(ei clae a2t a2 t#ac #acti4 ti4a#e a#ea: a: Ete Ete *+ *+i i2il 2ilita itatea tea ca u( *#+" *#+"#a1 #a1 i"(+ i"(+#e #e u( u(el elee a*ec a*ecte te ale ale i(f+#1aiei *e ca#e + 1a(i*ulea4, a'ic *+i2ilitatea 'e a e c+(ce(t#a au*#a ee(ialului! Ete *#+ceul *#i( ca#e e i'e(tific @i e #ei( (u1ai ca#acte#iticile ee(iale ale #ealitii 1+'elate! Cel 1ai 'e, a2t#acti4a#ea ete =(t>l(it atu(ci c>(' +2iectele cu acelea@i at#i2ute @i acela@i c+1*+#ta1e(t u(t "#u*ate =( ti*u#i a2t#acte (u1ite clae! Claele u(t #e*#e4e(t#i 1+'ele< a2t#acte, c+(ce*tuale ale u(+# e(titi claa: 'ec#ie#e a u(ei 1ultitu'i(i 'e +2iecte cu aceleai at#i2ute i 1et+'e =(ca*ula#ea acu('e#ea 'e i(f+#1aii< 1+@te(i#ea: e8ti('e#ea u(ei clae *+li1+#fi1ul: Ete a2ilitatea 'e a *#+cea +2iectele =( 1+' 'ife#it, =( fu(cie 'e ti*ul au 'e claa l+#! Mai e8act, ete a2ilitatea 'e a #e'efi(i 1et+'e *e(t#u claele 'e#i)ate! 0
Cu#ec&i A'#ia( SI$%%% •
*e#ite(a: 'ec#ie 'u#ata 'e )ia a u(ui +2iect =( #a*+#t cu a*licaia ce l$a c#eat!
%! Sa#ci(a te&(ic a ite1ului A*licația )a fi i1*le1e(tat f+l+i(" *latf+#1a .Net, și a(u1e li12a;ul C# ! Pe(t#u t#a(1ite#ea e1ail$u#il+# e )a c#ea + cla SMTP Client , =( aceat cla e )a face + c+(e8iu(e, f+l+i(' *#+t+c+lul TCP *#i( i(te#1e'iul claei TcpClient < , la e#)e#, și f+l+i(' c+1e(4ile *#+t+c+lului SMTP , e )a c#ea și e )a t#a(1ite u( e1ail (+u! Pe(t#u e8t#a"e#ea e1ail$u#il+# 'e *e e#)e# e )a f+l+i *#+t+c+lul IMAP, 'e ae1e(i e )a c#ea + cla 'e "e(ul IMAP Client, ca#e t+t e )a c+(ecta la e#)e# f+l+i(' *#+t+c+lul TCP ! T+ate c+(e8iu(ile 'i(t#e a*licaț ie și e#)e# )+# fi ecu#i4ate, f+l+i(' *#+t+c+lul SSL, *e(t#u aceata e )a f+l+i claa SslStream, ca#e *#i1i(' t#ea1$ul c+(e8iu(ii TCP, =l =(l+cuiește cu u(ul ecu#i4at! I(te#fața a*licației )a fi fcut f+l+i(' Windows orms! La *+#(i#ea a*licației, )a fi + fe#eat#, =( ca#e e )a ce#e utili4at+#ului e i(t#+'uc eta#ile e#)e#ului!ost $ul e#)e#ului și port $ul acetuia<, și c#e'e(țialeleemail $ul și password $ul
/
Cu#ec&i A'#ia( SI$%%%
-! Ela2+#a#ea 'ia"#a1el+# UML Ela2+#a#ea 'ia"#a1el+# UML au ca c+* #e*#e4e(ta#ea ite1ulu =(t#$+ f+#1 at=t =(țelea 'e util4iat+#i c=t ș i 'e 'e)el+*e#i, 'i( t+ate a*ectele , at=t fu(cț i+(al c=t ș i t#uctu#al! Dia"#a1ele le$a1 ela2+#at cu a;ut+#ul i(t#u1e(tului E(te#*#ie A#c&itect!
-!%! Ela2+#a#ea 'ia"#a1el+# ca4u#il+# 'e utili4a#e
i"ura . $ia"rama ca% de utili%are pentru con&i"urare
A*licația Mail Client (u )a fi )ala2ila '+a# *e(t#u u( a(i1it e#)iciu e1ail, ci *e(t#u +#ica#e e#)iciu '+#ește utili4at+#ul f+l+eac! Pe(t#u aceata, la *+#(i#ea a*licației, utili4at+#ului i e )a ce#e a i(t#+'uc et#ile (ecea#e *e(t#u c+(ecta#ea la e#)e#ul *+ștei elect#+(ice, aș a cu1 ete a#tat =( &i".! Pe(t#u a e c+(ecta la e#)e#ul e#)iciului e1ail, utili4at+#ul t#e2uie i(t#+'uc &+t$ul e#i)iului IMAP și *+#tul acetui e#)iciu, 'ate ca )+# fi f+l+ite la e8t#a"e#ea e1ail$u#il+# 'e *e e#)e#! De ae1e(i utili4at+#ul t#e2uie i(t#+'uc i &+t$ul e#)iciul SMTP și *+#tul *e(t#u acet e#)iuciu, *e(t#u a *utea t#a(1ite e1ail$u#i 'i( a*licaț ie! 3
Cu#ec&i A'#ia( SI$%%% Utili4at+#ul, *e l=(" i(t#+'uce#ea et#il+# (ecea#e, t#e2uie i(t#+'uc ș i c#e'e(țialele ale email $ ul ș i parola<, *e(t#u a *utea f+l+i *#+t+c+ale IMAP și SMTP, acet luc#u ete #e*#e4e(tat =( 'ia"#a1a ca4u#il+# 'e utili4a#e 'i( &i".'!
i"ura '. $ia"rama ca% de utili%are pentru autenti&icare
7
Cu#ec&i A'#ia( SI$%%%
i"ura (. $ia"rama ca% de utili%are pentru )i%uali%are email*urilor
( &i".( u(t #e*#e4e(tate ca4u#ile 'e utili4a#e, ce a#ata 1+'ul 'e )i4uali4a#e a litei e1ail$u#il+#! Ma;+#itatea e#)iciil+# e1ail, +fe# *+i2ilitatea 'e a =1*#ț i e1ail$u#ile =( 1a*e, =(ce*=(' cu cele ta('a#te Inbo+, $ra&t , Sent , Tras! etc!< și te#1i(=(' cu 1a*e 'efi(ite 'e utili4at+#! A*licația )a *e#1ite )i4uali4a#ea litei 1a*el+#, ș i =(c#ca#ea e1ail$ u#il+# 'i( 1a*a electat 'e utili4at+#! Lita 'e e1ail$u#i )a +fe#i așa i(f+#1aț ii ca: u2iectul e1ail$ului, e1ail$ul u# și e1ail$ul 'eti(aț iei1*+#ta(t =( ca4ul =( ca#e e face #e'i#ecți+(a#e 'e *e + alt cuț *+ștal
Cu#ec&i A'#ia( SI$%%%
i"ura . $ia"rama ca% de utili%are pentru acț iuni asupra email*ului
Di( lita cu e1ail$u#i, utili4at+#ul *+ate e8ecuta ca#e)a 1a(i*ulaț ii cu e1ail$ul, acetea u(t a#tate =( &i".! ( '#e*tul fic#ui e1ail 'i( lit )a fi c=te u( 2ut+( J $eleteK, ca#e )a *e#1ite te#"e#ea e1ail$ului #e*ecti)! A*=(' *e u2iectul e1ail$ului )a fi afișat c+(ți(utul e1ail$ului! Pe(t#u a t#i1ite + c#i+a#e, utili4at+#ul t#e2uie i(t#+'uc ele1e(tele *#i(ci*ale: u2iectul e1ail$ului, c+(ți(utul acetuia ș i a'#ea 'eti(ata#ului! Fa# u(ul 'i( acete ele1e(te t#i1ite#ea e1ail$ului (u )a fi *+i2il 2ut+(ul 'e t#i1ite#e, (u )a fu(cți+(a
5
Cu#ec&i A'#ia( SI$%%%
i"ura -. $ia"rama ca% de utili%are pentru trimiterea unui email
-!-! Ela2+#a#ea 'ia"#a1el+# 'e cla
6
Cu#ec&i A'#ia( SI$%%% i"ura . $ia"rama de clase
A1 c#eat '+a# + i("u# 'ia"#a1 'e clae, 'e+a#ece *#+iectul (u c+(ți(e 1ulte clae, acetea u(t #e*#e4e(tate 'e 'ia"#a1a 'i( &i". ! Claa 'e 2a4 a *#+iectului ete M/MailClient , aceata c+(ți(e c=te u( +2iect al clael+# SMTPClient și IMAPCLient , și + c+lecție 'e +2iecte 'e ti* M/Mail ! De ae1e(i claa M/MailClient c+(ți(e și ele1e(te 'e i(te#faț a a*licației, ca#e (u au f+t i(t#+'uce =( 'ia"#a1a 'e clae, 'e+a#ece (u ;+aca #+l =( fu(cți+(a#ea l+"ic a a*licației! Claa M/Mail (u a#e 1et+'e, ci '+a# at#i2ute! Aceat cla e f+l+ește *e(t#u t+ca#ea 'atel+# e1ail$uluiu2;et, 2+', f#+1, t+
%.
Cu#ec&i A'#ia( SI$%%%
-!0! Ela2+#a#ea 'ia"#a1el+# 'e ec)e(ț
i"ura 0. $ia"rama de sec)enț 1 pentru autenti&icare
( &i".0 ete #e*#e4e(tat 1+'ul 'e aute(tifica#e a utili4at+#ului! La *+#(i#ea a*licaț iei utili4at+#ului i e ce#e i(t#+'uc 'atele (ecea#e *e(t#u fu(cț i+(a#ea aceteia, acetea u(t: − − −
a'#ea e#)e#ului IMAP și *+#tul #e*ecti) a'#ea e#)e#ului SMTP și *+#tul #e*ecti) l+"i($ul și *a#+la utili4at+#ului!
%%
Cu#ec&i A'#ia( SI$%%%
i"ura 2. $ia"rama de sec)enț1 pentru a&ișarea email*urilor i".5
a#at cu1 a#e l+c afișa#ea litei e1ail$u#il+#! Du* aute(tifica#e, a*licația *#i( i(te#1e'iul claei IMAPClient e c+(ectea4 la e#)e#, ce#e lita 'e 1a*e și + fișea4 utili4at+#ului! P#e'efi(it la *+#(i#ea a*licaț iei, e electea4 *#i1a 1a* 'i( lit ș i e e8t#a" e1ail$u#ile 'i( acea 1a*! Du* ata utili4at+a#ul *+ate electa alt 1a*, și e )+# e8t#a"e e1ail$u#ile 'e;a 'i( 1a*a (+u alea! Utili4at+#ul a#e *+i2ilitatea 'e a ște#"e u( e1ail, 1+'ul 'e ște#"e#e ete #e*#e4e(tat 'e 'ia"#a1a 'e ec)e(ț 'i( &i".3! Du* aute(tifica#e și afișa#ea litei e1ail$u#il+#, utili4at+#ul *+ate ște#"e e1ail$ul *#i( a*a#ea 2ut+(ului JDeleteK! Du* a*a#ea 2ut+(ului, *#i( i(te#1e'iul claei IMAPClie(t, e t#a(1ite la e#)e# u( 1ea; *e(t#u 1a#ca#ea e1ail$ului *e(t#u ște#"e#e, 'u* ca#e e t#a(1ite alt 1ea;, *e(t#u ște#"e#ea tutu#+# 1ea;el+# 1a#cate *e(t#u ște#"e#e!
%-
Cu#ec&i A'#ia( SI$%%%
i"ura 3. $ia"rama de sec)enț 1 pentru ster"erea unui email
%0
Cu#ec&i A'#ia( SI$%%% i"ura 4. $ia"rama de sec)enț 1 pentru trimiterea unui email
Pe(t#u a t#i1ite u( e1ail, utili4at+#ul t#e2uie i(t#+'uc u2iectul e1ail$ului, te8tul e1ail$ului și a'#ea 'eti(ata#ului! Du* i(t#+'uce#ea tutu#+# 'atel+#, t#e2uie a*ee 2ut+(ul JSend K, 'ac (u au f+t i(t#+'ue t+ate 'atele, 2ut+(ul (u )$a fu(cți+(a! La a*a#ea 2ut+(ului, *#i( i(te#1e'iul SMTPClie(t, e face + c+(e8iu(e la e#)e#, e =(ca#c t+ate 'atele =( SMTPClie(t, și e t#a(1it la e#)e# c+(f+#1 *#+t+c+lului! ( ca4 c e1ail$ ul a f+t t#a(1i cu ucce, utili4at+#ului i e )a afișa u( 1ea; 'e*#e aceta! Aceata ete #e*#e4e(tat =( 'ia"#a1a 'e ec)e(ț 'i( &i".4!
-!/! Ela2+#a#ea 'ia"#a1el+# 'e acti)itți
i"ura . $ia"rama de acti)itate pentru )i%uali%area unui email
Pe(t#u a *utea )i4uali4a c+(ți(utul u(ui e1ail utili4at+#ul t#e2uie e8ecute u( et 'e acțiu(i, *e(t#u a a#ta acete acțiu(i, a1 ela2+#at 'ia"#a1a 'e acti)itți, ca#e ete *#e4e(tat 'e &i".! (ce*=(' cu 'eci'e#ea a*licației, utili4at+#ul t#e2uie e au(te(tifice, electe4e 1a*a =( ca#e e afl e1ail$ul '+#it, $l electe4e 'i( lit, 'u* ca#e *+ate )i4uali4e c+(ți(utul acetuia! T#a(1ite#ea u(ui e1ail, 'e ae1e(i, (eceit u( et 'e acti)itți e8ecutate 'e utili4at+#! Du* 'ec&i'e#ea a*licației și l+"a#e, aceta t#e2uie i(t#+'uc 'atele e1ail$ ului, (u (ea*#at =(t#$+ +#'i(e au1it, 'a# +2li"at+#iu *e t+ate! Acti)itțile 'ate u(t #e*#e4e(tate 'e 'ia"#a1a 'e acti)itți 'i( &i".'!
%/
Cu#ec&i A'#ia( SI$%%%
i"ura '. $ia"rama de acti)itate pentru trimiterea unui email
-!3! Ela2+#a#ea 'ia"#a1el+# 'e t#i
%3
Cu#ec&i A'#ia( SI$%%% i"ura (. $ia"rama de stari5 ster"erea unui email
( ca'#ul e8ecuției, ite1ul t#ece *#i( 1ai 1ulte t#i! i".( a#at t#ile *#i( ca#e t#ece ite1ul =( ti1*ul te#"e#ii u(ui e1ail! Du* *+#(i#ea a*licației, e aștea*t ca utili4at+#ul i(t#+'uc 'atele 'e aute(tifica#e, 'u* aceata e c+(ectea4 la e#)e# ș i e afl =( ta#ea #e*ecti)! Du* ce =(ca#c lita 1a*el+#, ite1ul aștea*t ca utili4at+#ul electe4e 1a*a '+#it! C=(' e1ail$u#ile u(t afișate, ite1ul e afl =( aște*ta#ea electa#ii e1ail$ului 'e ct#e utili4at+#! La electa#ea e1ail$ului e t#i1ite c+1a('a la e#)e#, *e(t#u a$l ște#"e! Du* ce e1ail$ul a f+t ște#, ite1ul e =(t+a#ce la ta#ea c=(' ete afișat lita cu e1ail$u#i, și aștea*t +#i electa#ea altui e1ail, +#i =(c&i'e#ea a*licaț iei!
-!7! Ela2+#a#ea 'ia"#a1el+# 'e c+1*+(e(te
i"ura . $ia"rama de componente a sistemului
Dia"#a1a 'e c+1*+(e(te #e*#e4e(tat =( &i". a#at cu1 ete +#"a(i4at ite1ul! Site1ul ete f+#1at 'i( - *#+iecte: −
−
AppInter&ace:
i(te#fața a*licației
și
t+ate c+1*+(e(tele 'e i(te#acț iu(e cu
utili4at+#ul AppCore: claele ce cu*#i(' l+"ica ite1ului o IMAPClie(t o SMTPClie(t o MMail o T++l!
%7
Cu#ec&i A'#ia( SI$%%%
0! I(te#fața ite1ului
i"ura -. Pa"ina de star a aplicaț iei
i"ura . Tab*ul cu lista email*urilor dintr*o map1
%
Cu#ec&i A'#ia( SI$%%%
ir"ura 0. Tab*ul cu conț inutul unui email
i"ura 2. Tab*ul cu lista mapelor
%5
Cu#ec&i A'#ia( SI$%%%
i"ura 3. Tab*ul 6n care se scrie un email nou
%6
Cu#ec&i A'#ia( SI$%%%
C+(clu4ie Pa#a'i"1a *#+"#a1a#ii +#ie(tate *e +2iecte (e 'a *+i2ilitatea a 'i)i4a1 ite1ul c+1*le8 i( 1ai 1ulte 1+'ule, i('e*e('e(te la (i)el 'e i1*le1e(ta#e, ca#e i(te#acti+(ea4a i c#ea4a u( t+t i(t#e"! POO (e +fe#a 1ai 1ulte (i)ele 'e a2t#acti4a#e i atfel la fieca#e 'i( acete (i)ele (e )+1 c+(e(t#a ate(tia au*#a *#i(ci*alului i (u a u*#a 'etaliil+#, 'e+a#ece acetea )+# fi acu(e 'e la u( (i)el la alt (i)el 'e a2t#acti4a#e! M+te(i#ea, *+li1+#fi1ul i i(ca*ula#ea (e +fe#a *+i2ilitatea 'e ela2+#a#e a +ftu#il+# i(t#$+ 1a(ie#a 2i(e t#uctu#ata 'i( *u(c 'e )e'e#e a l+"icii! POO 'eae1e(ea (e *u(e la 'i*+4itie + 'e*a(a#e 1ai u+a#a a 1+'ulel+# i 'e*ita#ea 1ai #a*i'a a e#+#il+# ce *+t a*a#ea la eta*a 'e 'e4)+lta#e! Efectu=(' acet *#+iect 'e a(, a1 #eali4at 'ia"#a1ele ca4 'e utili4a#e *e(t#u a 1+'ela ite1ul *#+*u, Mail Client ! Cu a;ut+#ul 'ia"#a1el+# ca4 'e utili4a#e a1 *ecificat acțiu(ile *e ca#e le *+ate e8ecuta utili4at+#ul au*#a u(ui e1ail, au acț iu(ile ca#e t#e2uie (u1ai'ec=t e8ecutate! Pe(t#u a #e*#e4e(ta 'eti(ația fu(cț i+(al a ite1ului a1 ela2+#at 'ia"#a1a ca4u#il+# 'e utili4a#e, ia# *e(t#u a #e*#e4e(ta i(te#acțiu(ea =( ti1* ș i *ațiu 'i(t#e +2iectele ce *a#tici* la f+#1a#ea ite1ului, a1 ela2+#at 'ia"#a1a 'e i(te#acțiu(e c+1*u 'i( 'ia"#a1e 'e ec)e(ța! ( ca4ul =( ca#e a1 'ec#i t#uctu#a i(te#( a ite1ului, a1 #eali4at 'ia"#a1a clael+#! Dia"#a1a 'e ta#e a1 #eali4at$+ cu c+*ul 'e a e)i'e(ția c+1*+#ta1e(tul +2ectel+# *e *a#cu#ul ciclu#il+# ale 'e )iaț a, *ecific=(' t#ile =( ca#e +2iectele *+t t#ece și t#a(4iț iile #e*ecti)e 'i(t#e acete t#i! A1 #e*#e4e(tat a#&itectu#a ite1ului *#i( 'e#et1i(a#ea 'e*e('e(ț el+# 'i(t#e c+1*+(e(te! I( )i4iu(ea 1ea, li12a;ul UML +fe#a + 'ec#ie#e la (i)el l+"ic, c+(ce*tual i fi4ic a ite1ului ela2+#at, ceea ce *#1ite + *e#ce*e#e 1ai cla#a a t#uctu#ii i fu(cti+(alitatil+# ite1ului!
-.
Cu#ec&i A'#ia( SI$%%%
Bi2li+"#afie %! MSDN$t&e 1ic#++ft 'e)el+*e# (et+# Reu# elect#+(ic $ &tt*:1'(!1ic#++ft!c+1 -! INTERNET MESSAGE ACCESS PROTOCOL $ VERSION /#e)% Reu# elect#+(ic $ &tt*:t++l!ietf!+#"&t1l#fc03.% 0! Si1*le Mail T#a(fe# P#+t+c+l Reu# elect#+(ic $ &tt*:t++l!ietf!+#"&t1l#fc30-% /! STANDARD FOR THE FORMAT OF ARPA INTERNET TEQT MESSAGES Reu# elect#+(ic $ &tt*:t++l!ietf!+#"&t1l#fc5-3! UML - Tut+#ial Reu# elect#+(ic $ &tt*:!*a#8te1!c+1!au#e+u#ceu1l-tut+#ial
-%
Cu#ec&i A'#ia( SI$%%%
A(e8a A 9 SMTPClie(t!c using System; using System.IO; using System.Net.Security; using System.Text; namespace AppooProjectClasses { public class SMTPClient System.Net.Soc!ets. TcpClient { pri"ate SslStream sslStream; pri"ate Stream#riter $riter; pri"ate Stream%ea&er rea&er; public String 'mail { get; set; ( public String Pass$or& { get; set; ( public String 'mailTo { get; set; ( public String Subject { get; set; ( public String )o&y { get; set; ( public String *ost { get; set; ( public Int+, Port { get; set; ( public SMTPClient- { (
public "oi& Connect- { Connect-*ost/ Port; sslStream 0 ne$ SslStream-1etStream-; sslStream.Aut2enticateAsClient-*ost; $riter 0 ne$ Stream#riter-sslStream; rea&er 0 ne$ Stream%ea&er-sslStream; String response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7,,57 { t2ro$ ne$ 'xception-response; ( ( public "oi& Sen&- { String response; $riter.#rite3ine-72elo7; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7,957 { t2ro$ ne$ 'xception-response; ( $riter.#rite3ine-7aut2 login7; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7++:7 { t2ro$ ne$ 'xception-response; (
--
Cu#ec&i A'#ia( SI$%%% String base:'mail 0 Tools.To)ase:-'mail; $riter.#rite3ine-base:'mail; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7++:7 { t2ro$ ne$ 'xception-response; (
String base:Pass$or& 0 Tools.To)ase:-Pass$or&; $riter.#rite3ine-base:Pass$or&; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7,+97 { t2ro$ ne$ 'xception-response; (
$riter.#rite3ine-7mail 4rom<7 = 'mail = 7>7; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7,957 { t2ro$ ne$ 'xception-response; (
$riter.#rite3ine-7rcpt to<7 = 'mailTo = 7>7; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7,957 { t2ro$ ne$ 'xception-response; (
$riter.#rite3ine-7&ata7; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7+9:7 { t2ro$ ne$ 'xception-response; (
$riter.#rite3ine-74rom7 = 'mail; $riter.#rite3ine-7to7 = 'mailTo; $riter.#rite3ine-7subject7 = Subject; $riter.#rite3ine-)o&y; $riter.#rite3ine-7.7; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7,957 { t2ro$ ne$ 'xception-response; (
$riter.#rite3ine-7?uit7; $riter.8lus2-; response 0 rea&er.%ea&3ine-; i4 -response.Substring-5/ + 60 7,,@7 { t2ro$ ne$ 'xception-response; ( ( (
-0
Cu#ec&i A'#ia( SI$%%% (
-/
Cu#ec&i A'#ia( SI$%%%
A(e8a B 9 IMAPClie(t!c using System; using System.Collections.1eneric; using System.IO; using System.Net.Security; using System.Net.Soc!ets; using System.Text; using System.Text.%egular'xpressions; namespace AppooProjectClasses { public class IMAPClient Iisposable { pri"ate TcpClient client; pri"ate SslStream sslStream; pri"ate Stream%ea&er rea&er; pri"ate Stream#riter $riter; public String *ost { get; set; ( public Int+, Port { get; set; ( public Int+, MailsCount { get; set; ( public MyMail 1etMail-Int+, in&ex { MyMail mail 0 ne$ MyMail-; mail.2asAttac2ments 0 4alse; String comman& 0 7. 4etc2 7 = -in&ex = @ = 7 -bo&yB2ea&er.el&s -to 4rom subjectD7; Comman&-comman&; String temp; String)uil&er string)uil&er 0 ne$ String)uil&er-; $2ile -6-temp 0 rea&er.%ea&3ine-.Starts#it2-7. 7 { string)uil&er.Appen&-temp = 7En7; ( String response 0 string)uil&er.ToString-; response 0 response.%eplace-7En7/ 77; mail.Subject 0 Tools.1etSubject-response; mail.8rom 0 Tools.1etSen&er-response; mail.To 0 Tools.1etestination-response; comman& 0 String.8ormat-7. 4etc2 {5( -bo&yB2ea&er.el&s -ContentFType ContentFTrans4erF 'nco&ingD7/ in&ex = @; Comman&-comman&; string)uil&er.Clear-; temp 0 rea&er.%ea&3ine-; $2ile -6-temp 0 rea&er.%ea&3ine-.Starts#it2-7. OG7 { i4 -temp 60 77 HH temp 60 77 { string)uil&er.Appen&-temp = 7En7; ( ( response 0 string)uil&er.ToString-; String contentType 0 Tools.1etContentType-response; i4 -contentType.Contains-7multipart7 { i4 -contentType.Contains-7mixe&7 { comman& 0 String.8ormat-7. 4etc2 {5( -bo&yB@.,.mimeD7/ in&ex = @; mail.2asAttac2ments 0 true; ( else
-3
Cu#ec&i A'#ia( SI$%%% {
comman& 0 String.8ormat-7. 4etc2 {5( -bo&yB,.mimeD7/ in&ex = @; ( Comman&-comman&; string)uil&er.Clear-; temp 0 rea&er.%ea&3ine-; $2ile -6-temp 0 rea&er.%ea&3ine-.Starts#it2-7. OG7 { i4 -temp 60 77 HH temp 60 77 { string)uil&er.Appen&-temp = 7En7; ( ( response 0 string)uil&er.ToString-; i4 -contentType.Contains-7mixe&7 { comman& 0 String.8ormat-7. 4etc2 {5( -bo&yB@.,D7/ in&ex = @; ( else { comman& 0 String.8ormat-7. 4etc2 {5( -bo&yB,D7/ in&ex = @; ( ( else { comman& 0 String.8ormat-7. 4etc2 {5( -bo&yBtextD7/ in&ex = @; ( Comman&-comman&; string)uil&er.Clear-; temp 0 rea&er.%ea&3ine-; $2ile -6-temp 0 rea&er.%ea&3ine-.Starts#it2-7. OG7 { i4 -temp 60 77 HH temp 60 77 { string)uil&er.Appen&-temp = 7En7; ( ( String mail)o&y 0 string)uil&er.ToString-.Trim-; i4 -6String.IsNullOr'mpty-mail)o&y HH mail)o&yBmail)o&y.3engt2 F @D 00 { mail)o&y 0 mail)o&y.Substring-5/ mail)o&y.3engt2 F @; ( JJ1et c2arset %egex c2arset%egex 0 ne$ %egex-7c2arset0E7K-KBLEEsE7;D=E7K;KEnK7 ; Matc2 c2arsetMatc2 0 c2arset%egex.Matc2-response; String c2arset 0 c2arsetMatc2.1roupsB7c2arset7D.alue; JJ1et enco&ing %egex enco&ing%egex 0 ne$ %egex7ContentFTrans4erF'nco&ing E7K-K.E7KEn7/ %egexOptions.IgnoreCase; Matc2 enco&ingMatc2 0 enco&ing%egex.Matc2-response; String enco&eing 0 enco&ingMatc2.1roupsB7enco&ing7D.alue; s$itc2 -enco&eing { case 7base:7 { )yteBD base:)ytes 0 Con"ert.8rom)ase:String-mail)o&y; mail.)o&y 0 'nco&ing.1et'nco&ing-c2arset.1etString-base:)ytes; brea!; ( case 7?uote&Fprintable7 {
-7
Cu#ec&i A'#ia( SI$%%% mail.)o&y 0 Tools.eco&eP-mail)o&y/ c2arset; brea!; ( &e4ault { mail.)o&y 0 mail)o&y; brea!; ( ( return mail; (
public "oi& eleteMail-Int+, in&ex { String response; JJelete mail String comman& 0 String.8ormat-7. 4etc2 {5( ui&7/in&ex = @; Comman&-comman&; response 0 rea&er.%ea&3ine-; %egex ui&%egex 0 ne$ %egex-7EE-IEEs-KEE&=EE7 ; Matc2 ui&Matc2 0 ui&%egex.Matc2-response; String ui& 0 ui&Matc2.1roupsB7ui&7D.alue; rea&er.%ea&3ine-; comman& 0 String.8ormat-7. ui& store {5( =Qags -EEelete&7/ ui&; Comman&-comman&; rea&er.%ea&3ine-; rea&er.%ea&3ine-; Comman&-7. expunge7; $2ile -6-response 0 rea&er.%ea&3ine-.Starts#it2-7. 7 ; ( pri"ate "oi& Comman&-String comman& { $riter.#rite3ine-comman&; $riter.8lus2-; ( public "oi& Connect-String email/ String pass$or& { try { client 0 ne$ TcpClient-; client.Connect-*ost/ Port; sslStream 0 ne$ SslStream-client.1etStream-; sslStream.Aut2enticateAsClient-*ost; rea&er 0 ne$ Stream%ea&er-sslStream; $riter 0 ne$ Stream#riter-sslStream; String)uil&er string)uil&er 0 ne$ String)uil&er-; String temp; $2ile -6-temp 0 rea&er.%ea&3ine-.Starts#it2-7 OG7 { string)uil&er.Appen&-temp = 7En7; ( string)uil&er.Appen&-temp; Comman&-7. login 7 = email = 7 7 = pass$or&; string)uil&er.Clear-; $2ile --temp 0 rea&er.%ea&3ine-.Starts#it2-77 { string)uil&er.Appen&-temp = 7En7; ( i4 -6temp.Contains-7. OG7 { t2ro$ ne$ 'xception-7In"ali& cre&ential7;
-
Cu#ec&i A'#ia( SI$%%% ( ( catc2 { CloseConnection-; t2ro$; (
(
public 3ist<8ol&er> 1et8ol&ers- { 3ist<8ol&er> 4ol&ers 0 ne$ 3ist<8ol&er>-; Comman&-7. list E7E7 E7E77; String)uil&er string)uil&er 0 ne$ String)uil&er-; String temp; $2ile --temp 0 rea&er.%ea&3ine-.Starts#it2-77 { i4 -6temp.Contains-7Noselect7 { StringBD strarr 0 temp.Split-7; 4ol&ers.A&&-ne$ 8ol&er-strarrB+D; ( ( return 4ol&ers; ( public "oi& Select8ol&er-String 8ol&er { Comman&-7. select E77 = 8ol&er = 7E77; String)uil&er string)uil&er 0 ne$ String)uil&er-; String temp; MailsCount 0 F@; $2ile --temp 0 rea&er.%ea&3ine-.Starts#it2-77 { i4 -temp.Contains-7'RISTS7 { StringBD strarr 0 temp.Trim-.Split- ; MailsCount 0 Con"ert.ToInt+,-strarrB@D; ( ( ( pri"ate "oi& CloseConnection- { JJClose connection Comman&-7logout7; rea&er.%ea&3ine-; rea&er.Close-; $riter.Close-; sslStream.Close-; client.Close-; ( public "oi& ispose- { ispose-true; 1C.Suppress8inalie-t2is; ( protecte& "irtual "oi& ispose-bool &isposing { i4 -&isposing {
-5
Cu#ec&i A'#ia( SI$%%%
CloseConnection-; ( ( (
(
A(e8a C 9 T++l!c using System; using System.Collections.1eneric; using System.Text; using System.Text.%egular'xpressions; namespace AppooProjectClasses { public struct MyMail { public String To; public String 8rom; public String Subject; public String )o&y; public )oolean 2asAttac2ments; ( public struct 8ol&er { public String name; public 8ol&er-String name { name 0 name; ( ( public class Tools { public static String To)ase:-String input { )yteBD inputString)ytes 0 ASCII'nco&ing.ASCII.1et)ytes-input; return Con"ert.To)ase:String-inputString)ytes; (
Uregion Mail*ea&erIn4o public static String 1etSubject-String mailSourceCo&e { JJ8in& Subject %egex subject%egex 0 ne$ %egex7BsSDubject-K-EEs=.=KEn7/ %egexOptions.IgnoreCase; Matc2 subjectMatc2 0 subject%egex.Matc2-mailSourceCo&e; String subject 0 subjectMatc2.1roupsB7subject7D.alue; i4 -%egex.IsMatc2-subject/ 70EEKBLEEKDEEKB?b)DEEK7 { return Por)ase:ToString-subject.Trim-; ( else { return subject.Trim-; ( ( public static String 1etSen&er-String mailSourceCo&e {
-6
Cu#ec&i A'#ia( SI$%%% JJ8in& Sen&er %egex 4rom%egex 0 ne$ %egex7B48DromEEs-E7K-KBLE7EEsKKEn7 / %egexOptions.IgnoreCase; Matc2 4romMatc2 0 4rom%egex.Matc2-mailSourceCo&e; String sen&erName 0 4romMatc2.1roupsB7name7D.alue; String sen&er'mail 0 4romMatc2.1roupsB7email7D.alue; i4 -%egex.IsMatc2-sen&erName/ 70EEKBLEEKDEEKB?b)DEEK7 { return Por)ase:ToString-sen&erName.Trim- = 7 7 = sen&er'mail.Trim-; ( else { return sen&erName.Trim- = 7 7 = sen&er'mail.Trim-; ( ( public static String 1etestination-String mailSourceCo&e { JJ8in& &estination %egex to%egex 0 ne$ %egex7BtTDoEEs-E7K-KBLE7EEsKKEn7 / %egexOptions.IgnoreCase; Matc2 toMatc2 0 to%egex.Matc2-mailSourceCo&e; String toName 0 toMatc2.1roupsB7name7D.alue; String to'mail 0 toMatc2.1roupsB7email7D.alue; i4 -%egex.IsMatc2-toName/ 70EEKBLEEKDEEKB?b)DEEK7 { return Por)ase:ToString-toName.Trim- = 7 7 = to'mail.Trim-; ( else { return toName.Trim- = 7 7 = to'mail.Trim-; ( (
public static String 1etContentType-String mailSourceCo&e { %egex type%egex 0 ne$ %egex7ContentFTypeEEs=K-KBL;D=EnK7/ %egexOptions.IgnoreCase; Matc2 typeMatc2 0 type%egex.Matc2-mailSourceCo&e; String Type 0 typeMatc2.1roupsB7type7D.alue; return Type; ( Uen®ion Mail*ea&erIn4o Uregion eco&ers pri"ate static String Por)ase:ToString-String enco&e&String { %egex enco&e%egex 0 ne$ %egex70EEK-KBLEEKDEEK-KB?b)DEEK-KEESEEK07 ; Matc2Collection enco&e&Matc2es 0 enco&e%egex.Matc2es-enco&e&String; String &eco&e&String 0 String.'mpty; 'nco&ing enco&er; 4oreac2 -Matc2 enco&e&Matc2 in enco&e&Matc2es { String enco&eType 0 enco&e&Matc2.1roupsB7enco&etype7D.alue; String c2arset 0 enco&e&Matc2.1roupsB7c2arset7D.alue; String enco&e&Text 0 enco&e&Matc2.1roupsB7enco&e&7D.alue; i4 -enco&eType 00 7)7 VV enco&eType 00 7b7 { enco&er 0 'nco&ing.1et'nco&ing-c2arset;
0.
Cu#ec&i A'#ia( SI$%%% )yteBD base:)ytes 0 Con"ert.8rom)ase:String-enco&e&Text; &eco&e&String =0 enco&er.1etString-base:)ytes; ( else { &eco&e&String =0 eco&eP-enco&e&Text/ c2arset; ( ( return &eco&e&String; ( public static String eco&eP-String input/ String enco&e { input 0 input.%eplace-70En7/ 77; 'nco&ing enc; try { enc 0 'nco&ing.1et'nco&ing-enco&e; ( catc2 { enc 0 'nco&ing.T8W; ( 3ist<)yte> bytes3ist 0 ne$ 3ist<)yte>-; 4or -Int+, i 0 5; i < input.3engt2; i== { i4 -i < input.3engt2 F , HH %egex.IsMatc2input.Substring-i/ +/ 70BAF85FXD{,(7 { )yte 2ex)yte 0 Con"ert.To)yte-input.Substring-i = @/ ,/ @; bytes3ist.A&&-2ex)yte; i =0 ,; ( else { bytes3ist.A&&-Con"ert.To)yte-inputBiD; ( ( return enc.1etString-bytes3ist.ToArray-; ( Uen®ion eco&ers
( (
0%
Cu#ec&i A'#ia( SI$%%%
A(e8a D 9 F+#1%!c using AppooProjectClasses; using System; using System.Collections.1eneric; using System.ComponentMo⪙ using System.T2rea&ing; using System.#in&o$s.8orms; namespace AppooProjectInter4ace { public partial class MyMailClient 8orm { IMAPClient imapClient; String email; String pass$or&; 3ist myMails; Int+, count; String current8ol&er;
public MyMailClient- { InitialieComponent-; imapClient 0 ne$ IMAPClient-; myMails 0 ne$ 3ist-; mail8ol&ers.Selecte&In&exC2ange& =0 mail8ol&ersSelecte&In&exC2ange&; mailsTable.CellClic! =0 mailsTableCellContentClic!; mail3oa&er.o#or! =0 mail3oa&ero#or!; mail3oa&er.ProgressC2ange& =0 mail3oa&erProgressC2ange&; mail3oa&er.%un#or!erComplete& =0 mail3oa&er%un#or!erComplete&; mailSen&er.o#or! =0 mailSen&ero#or!; mailSen&er.%un#or!erComplete& =0 mailSen&er%un#or!erComplete&; mailSen&er.#or!erSupportsCancellation 0 true; mailsTable.Mouse*o"er =0 -sen&er/ e"nt 0> { -sen&er as ata1ri&ie$.8ocus-; (; t2is.ispose& =0 -sen&er/ e"nt 0> { i4 -mail3oa&er.Is)usy { mail3oa&er.CancelAsync-; ( i4 -mailSen&er.Is)usy { mailSen&er.CancelAsync-; ( imapClient.ispose-; (; ( "oi& mail3oa&er%un#or!erComplete&-object sen&er/ %un#or!erComplete&'"entArgs e { mail8ol&ers.'nable& 0 true; ( "oi& mail3oa&erProgressC2ange&-object sen&er/ ProgressC2ange&'"entArgs e { i4 --sen&er as )ac!grounor!er.CancellationPen&ing 00 true { return;
0-
Cu#ec&i A'#ia( SI$%%% ( progress)ar.alue 0 e.ProgressPercentage = @; mailCount3abel.Text 0 7B7 = -e.ProgressPercentage = @ = 7J7 = count = 7D7; mailsTable.%o$s.A&&-; mailsTable.%o$sBe.ProgressPercentageD.CellsB5D.alue 0 myMailsBe.ProgressPercentageD.Subject; mailsTable.%o$sBe.ProgressPercentageD.CellsB@D.alue 0 myMailsBe.ProgressPercentageD.8rom; mailsTable.%o$sBe.ProgressPercentageD.CellsB,D.alue 0 myMailsBe.ProgressPercentageD.To; mailsTable.%o$sBe.ProgressPercentageD.CellsB+D.alue 0 myMailsBe.ProgressPercentageD.2asAttac2ments; mailsTable.%o$sBe.ProgressPercentageD.CellsB:D.Tag 0 e.ProgressPercentage.ToString-; (
"oi& mail3oa&ero#or!-object sen&er/ o#or!'"entArgs e { 4or -Int+, i 0 5; i < count; i== { i4 --sen&er as )ac!grounor!er.CancellationPen&ing 00 true { return; ( MyMail mail 0 imapClient.1etMail-i; myMails.A&&-mail; -sen&er as )ac!grounor!er.%eportProgress-i; ( (
"oi& mail8ol&ersSelecte&In&exC2ange&-object sen&er/ '"entArgs e { mail8ol&ers.'nable& 0 4alse; mailsTable.%o$s.Clear-; myMails.Clear-; current8ol&er 0 mail8ol&ers.ItemsBmail8ol&ers.Selecte&In&exD.ToString-; imapClient.Select8ol&er-current8ol&er; count 0 imapClient.MailsCount; progress)ar.alue 0 5; progress)ar.Maximum 0 count; mailCount3abel.Text 0 7B5J7 = count = 7D7; i4 -count >0 5 { mail3oa&er.%un#or!erAsync-; ( else { Message)ox.S2o$-7'rror on selecting 4ol&er.7/ 7'rror7/ Message)ox)uttons.OG/ Message)oxIcon.'rror; ( ( "oi& mailSen&er%un#or!erComplete&-object sen&er/ %un#or!erComplete&'"entArgs e { toText)ox.Text 0 String.'mpty; subjectText)ox.Text 0 String.'mpty; bo&yText)ox.Text 0 String.'mpty; ne$Mail)ox.'nable& 0 true; ( "oi& mailSen&ero#or!-object sen&er/ o#or!'"entArgs e { SMTPClient smtpClient 0 ne$ SMTPClient-; smtpClient.*ost 0 smtp*ost.Text; smtpClient.Port 0 Con"ert.ToInt+,-smtpPort.alue; smtpClient.'mail 0 email; smtpClient.Pass$or& 0 pass$or&;
00
Cu#ec&i A'#ia( SI$%%% smtpClient.'mailTo 0 toText)ox.Text; smtpClient.Subject 0 subjectText)ox.Text; smtpClient.)o&y 0 bo&yText)ox.Text; smtpClient.Connect-; try { smtpClient.Sen&-; Message)ox.S2o$-7Mail sent success4ully.7/ 7Sent7/ Message)ox)uttons.OG/ Message)oxIcon.In4ormation; ( catc2 -'xception ex { Message)ox.S2o$-7An error occurre& $2ile sen&ing mail.En7 = ex.Message/ 7'rror7/ Message)ox)uttons.OG/ Message)oxIcon.'rror; ( smtpClient.Close-; (
pri"ate "oi& sen&Mail)uttonClic!-object sen&er/ '"entArgs e { )oolean an&&ressIs'ntre& 0 6String.IsNullOr'mpty-toText)ox.Text; )oolean subjectIs'ntre& 0 6String.IsNullOr'mpty-subjectText)ox.Text; i4 -an&&ressIs'ntre& HH subjectIs'ntre& { i4 -mailSen&er.Is)usy 00 4alse { mailSen&er.%un#or!erAsync-; ( ne$Mail)ox.'nable& 0 4alse; ( else { Message)ox.S2o$-7'nter all ne$ mail &ata.7; ( (
pri"ate "oi& mailsTableCellContentClic!-object sen&er/ ata1ri&ie$Cell'"entArgs e { i4 -e.ColumnIn&ex 00 5 HH e.%o$In&ex >0 5 { Int+, mailIn&ex 0 Int+,.Parse--sen&er as ata1ri&ie$.%o$sBe.%o$In&exD.CellsB:D.Tag.ToString-; MyMail mail 0 myMailsBmailIn&exD; i4 -6mail.)o&y.Contains-7
7 { mail.)o&y 0 mail.)o&y.%eplace-7En7/ 7
7; ( $eb)ro$ser@.ocumentText 0 mail.)o&y; tabControl.Selecte&Tab 0 mailContentPage; ( i4 -e.ColumnIn&ex 00 : HH e.%o$In&ex >0 5 { try { Int+, mailIn&ex 0 Int+,.Parse--sen&er as ata1ri&ie$.%o$sBe.%o$In&exD.CellsB:D.Tag.ToString-; imapClient.eleteMail-mailIn&ex; -sen&er as ata1ri&ie$.%o$s.%emo"eAt-e.%o$In&ex; countFF; mailCount3abel.Text 0 7B7 = count = 7J7 = count = 7D7; ( catc2 -'xception ex {
0/