版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
電子郵件客戶端軟件的研討與開發(fā)
1.引言1.1電子郵件簡(jiǎn)單引見 電子郵件(簡(jiǎn)稱E-mai1)又稱電子信箱、電子郵政,它是—種用電子手段提供信息交換的通訊方式。它是全球多種網(wǎng)絡(luò)上運(yùn)用最普遍的一項(xiàng)效力。這種非交互式的通訊,加速了信息的交流及數(shù)據(jù)傳送,它是—個(gè)簡(jiǎn)易、快速的方法。經(jīng)過銜接全世界的Internet,實(shí)現(xiàn)各類信號(hào)的傳送、接納、存貯等處置,將郵件送到世界的各個(gè)角落。到目前為止,可以說(shuō)電子郵件是Internet資源運(yùn)用最多的一種效力,E-mai1不只局限于信件的傳送,還可用來(lái)傳送文件、聲音及圖形、圖像等不同類型的信息。例如比較著名的郵件收發(fā)軟件有系統(tǒng)自帶的OutLook,還有比較著名的第三方軟件FoxMaiL,F(xiàn)astMail等等。1.2開發(fā)背景引見 當(dāng)前流行的各大郵件客戶端軟件的除了最主要的收發(fā)信件之外,功能越來(lái)越復(fù)雜,但是人們平常真正用到的功能很少,很多功能尤其對(duì)于那些計(jì)算機(jī)知識(shí)相對(duì)缺乏的人來(lái)說(shuō),更加顯得太過于華美而不太適用。有鑒于此,在了解RFC底層協(xié)議的根底上,我們開發(fā)了這個(gè)各種功能相對(duì)簡(jiǎn)單適用的郵件客戶端程序,簡(jiǎn)化了很多不用要的功能。1.3運(yùn)轉(zhuǎn)環(huán)境及開發(fā)環(huán)境1.3.1開發(fā)環(huán)境AMDAthlon(TM),512M內(nèi)存,80G硬盤Microsoft?Windows?XPProfessionalMicrosoft?VisualStudio2003(CSharp)Microsoft?DeveloperNetworkforVisualStudio.NET20031.3.2運(yùn)轉(zhuǎn)環(huán)境Intel?Pentium?2及以上處置器,32M以上內(nèi)存,4G以上硬盤Microsoft?Windows?9X/NT操作系統(tǒng)800*600或以上的屏幕分辨率確保機(jī)器上安裝有.NetFrameWork1.0或者以上版本
2.軟件架構(gòu)及系統(tǒng)用例圖2.1系統(tǒng)架構(gòu)軟件的總體架構(gòu)如圖2.1:2.2系統(tǒng)總體用例用戶新建賬號(hào)發(fā)送郵件接納郵件純文本郵件帶附件郵件2.3程序功能框圖3SMTP協(xié)議的研討 由于要開發(fā)的是郵件客戶端程序,就不得不用到SMTP協(xié)議和POP協(xié)議。而我個(gè)人擔(dān)任的是郵件發(fā)送功能的實(shí)現(xiàn),因此就必然會(huì)涉及到SMTP〔SimpleMailTransferProtocol〕協(xié)議。SMTP被用來(lái)在因特網(wǎng)上發(fā)送郵件,該協(xié)議規(guī)定了一些根本的命令和方法使客戶端與效力器進(jìn)展交互,以到達(dá)發(fā)送郵件的目的。3.1SMTP協(xié)議簡(jiǎn)介及任務(wù)原理3.1.1引見簡(jiǎn)單郵件傳輸協(xié)議〔SMTP〕的目的是可靠高效地傳送郵件,它獨(dú)立于傳送子系統(tǒng)而且僅要求一條可以保證傳送數(shù)據(jù)單元順序的通道。SMTP的一個(gè)重要特點(diǎn)是它可以在傳送中接力傳送郵件,傳送效力提供了進(jìn)程間通訊環(huán)境〔IPCE〕,此環(huán)境可以包括一個(gè)網(wǎng)絡(luò),幾個(gè)網(wǎng)絡(luò)或一個(gè)網(wǎng)絡(luò)的子網(wǎng)。了解到傳送系統(tǒng)〔或IPCE〕不是一對(duì)一的是很重要的。進(jìn)程能夠直接和其它進(jìn)程經(jīng)過知的IPCE通訊。郵件是一個(gè)運(yùn)用程序或進(jìn)程間通訊。郵件可以經(jīng)過銜接在不同IPCE上的進(jìn)程跨網(wǎng)絡(luò)進(jìn)展郵件傳送。更特別的是,郵件可以經(jīng)過不同網(wǎng)絡(luò)上的主機(jī)接力式傳送。3.2SMTP協(xié)議的命令和應(yīng)對(duì)3.2.1SMTP協(xié)議的命令 SMTP命令定義了郵件傳輸或由用戶定義的系統(tǒng)功能。它的命令是由<CRLF>終了的字符串。而在帶有參數(shù)的情況下,命令本身由<SP>和參數(shù)分開,假設(shè)未帶參數(shù)可以直接和<CRLF>銜接。郵箱的語(yǔ)法格式必需和接納站點(diǎn)的格式一致。下面討論SMTP幾個(gè)常用的命令和應(yīng)對(duì)。下面是SMTP命令:HELO<SP><domain><CRLF>MAIL<SP>FROM:<reverse-path><CRLF>RCPT<SP>TO:<forward-path><CRLF>DATA<CRLF>NOOP<CRLF>QUIT<CRLF>TURN<CRLF>3.2.2SMTP的應(yīng)對(duì)碼對(duì)SMTP命令的呼應(yīng)是多樣的,它確定了在郵件傳輸過程中懇求和處置的同步,也保證了發(fā)送SMTP知道接納SMTP的形狀。每個(gè)命令必需有且只需一個(gè)呼應(yīng)。SMTP呼應(yīng)由三位數(shù)字組成,其后跟一些文本。數(shù)字協(xié)助決議下一個(gè)應(yīng)該進(jìn)入的形狀,而文本對(duì)人是有意義的。三位的呼應(yīng)曾經(jīng)包括了足夠的信息,不用再閱讀文本,文本可以直接丟棄或者傳送給用戶。特別的是,文本是與接納和環(huán)境相關(guān)的,所以每次接納到的文本能夠不同。在附錄E中可以看到全部的呼應(yīng)碼。正規(guī)的情況下,呼應(yīng)由下面序列構(gòu)成:三位的數(shù)字,<SP>,一行文本和一個(gè)<CRLF>,或者也可以是一個(gè)多行呼應(yīng)。只需EXPN和HELP命令可以導(dǎo)致多行應(yīng)對(duì),然而,對(duì)一切命令,多行呼應(yīng)都是允許的。REPLYCODESBYFUNCTIONGROUPS500格式錯(cuò)誤,命令不可識(shí)別〔此錯(cuò)誤也包括命令行過長(zhǎng)〕501參數(shù)格式錯(cuò)誤502命令不可實(shí)現(xiàn)4命名控件MailSend 由于在CSharp言語(yǔ)中,都是以命名控件來(lái)組織程序的。而一切的類都?xì)w屬于一個(gè)特定的命名空間下。需求的命名空間系統(tǒng)本身自帶了一部分,而且假設(shè)系統(tǒng)沒有他需求的命名空間的話,就可以本人編寫,本節(jié)中的這個(gè)命名空間就是由于需求而編寫的。而調(diào)用某一個(gè)類中的某個(gè)變量成員的方法就是經(jīng)過命名空間名.類名.變量成員來(lái)訪問的,當(dāng)然在CSharp中假設(shè)在程序開場(chǎng)經(jīng)過Using命名空間名,就可以直接的象C++那樣來(lái)訪問成員變量,可以說(shuō)相當(dāng)?shù)姆奖悖@些都會(huì)在程序中表達(dá)出來(lái),在此不再做過多的表達(dá)。4.1發(fā)送郵件類SmtpMail4.1.1主要成員變量闡明1) 網(wǎng)絡(luò)銜接類及實(shí)例TcpClienttc為TCP網(wǎng)絡(luò)效力提供客戶端銜接類TcpClient實(shí)例對(duì)象tc。TcpClient類提供了一些簡(jiǎn)單的方法,用于在同步阻塞方式下經(jīng)過網(wǎng)絡(luò)來(lái)銜接、發(fā)送和接納流數(shù)據(jù)。而實(shí)例化的過程也是銜接SMTP效力器的過程。它的重載方法之一的兩個(gè)參數(shù)一個(gè)為效力器稱號(hào)字符串,另一個(gè)為效力器的埠。2〕提供用于網(wǎng)絡(luò)訪問的根底數(shù)據(jù)流及其實(shí)例NetworkStreamns此類提供訪問網(wǎng)絡(luò)的根底數(shù)據(jù)流的方法。其中最根本也是最重要的兩個(gè)方法就是Write〔〕和Read〔〕方法,至于參數(shù)不再次贅述。3〕一維字符串?dāng)?shù)組變量FilePath此字符串?dāng)?shù)組主要用來(lái)存放用戶選擇的附件的絕對(duì)途徑名,并在發(fā)送帶附件的郵件時(shí)用到。4〕發(fā)送郵件所需的根本參數(shù)比如用于ESMTP等錄檢驗(yàn)用的用戶名、密碼,發(fā)送郵件需求的收信人,發(fā)信人地址以及主題等等在此不再贅述。4.1.2主要成員函數(shù)闡明1〕重載的構(gòu)造函數(shù)SmtpMail〔〕 此函數(shù)主要用于在初始化過程中,把用戶選擇的附件的途徑以參數(shù)的方式傳給FilePath。2〕添加附件的函數(shù) AddAttachment 傳給FilePath的途徑,經(jīng)過這樣一個(gè)函數(shù)就可以循環(huán)的動(dòng)態(tài)的添加到IList接口的一個(gè)對(duì)象中了,方便以后在詳細(xì)的實(shí)現(xiàn)的過程中的運(yùn)用。3〕得到上傳的附件的文件流 GetStream 由于在網(wǎng)絡(luò)中的操作都是以網(wǎng)絡(luò)流的方式來(lái)實(shí)現(xiàn)的,因此先將上傳的附件轉(zhuǎn)換成文件流,然后再用Write的方法把這些附件的文件流寫入到網(wǎng)絡(luò)中,來(lái)完成發(fā)送附件的操作。4〕將字符串編碼為Base64字符串的函數(shù) Base64Encode 由于ESMTP的LOGIN認(rèn)證機(jī)制是采用Base64編碼,當(dāng)用戶發(fā)出AUTHLOGIN的命令后,效力器前往334的應(yīng)對(duì)碼等待用戶輸入。假設(shè)身份確認(rèn)后效力器前往235的應(yīng)對(duì)碼,否那么前往失敗信息。所以要將用戶名和密碼轉(zhuǎn)換成Base64編碼然后再發(fā)給效力器。此函數(shù)的作用就是把給定的字符串轉(zhuǎn)換成相應(yīng)的Base64編碼的字符串。5) 發(fā)送SMTP命令的函數(shù) SendCommand 這個(gè)函數(shù)的作用是把SMTP命令的字符串轉(zhuǎn)換成對(duì)應(yīng)的字節(jié)型值〔C#中規(guī)定的Write方法只能寫入字節(jié)型的數(shù)據(jù)〕然后寫入網(wǎng)絡(luò)中,假設(shè)操作勝利就前往一個(gè)標(biāo)志為真的布爾型變量,假設(shè)操作失敗或者發(fā)生異常就前往標(biāo)志為假的布爾型變量6) 接受效力器應(yīng)對(duì)的函數(shù) RecvResponse它的作用就是從網(wǎng)絡(luò)流中讀取效力器前往的字節(jié)型的信息,將其轉(zhuǎn)換成字符串型的變量,然后將其前往,可以經(jīng)過其前往值來(lái)判別操作能否勝利。詳細(xì)實(shí)現(xiàn)代碼如下所示:7)重載的函數(shù)Dialog它們的作用是與效力器交互,發(fā)送命令并接納回應(yīng)。不同的是參數(shù)是字符串類型的那個(gè)函數(shù),每次發(fā)送一條命令,并接受效力器的呼應(yīng),根據(jù)呼應(yīng)的信息來(lái)判別交互的結(jié)果能否勝利。而參數(shù)是字符串?dāng)?shù)組的函數(shù)每次發(fā)送的是一組命令,用于和效力器的交互,這個(gè)函數(shù)主要是用于ESMTP效力器的驗(yàn)證的功能,由于驗(yàn)證的過程是一個(gè)等待然后又輸入的過程,因此將他們放在一個(gè)數(shù)組中有利于了解和操作。而他們的實(shí)現(xiàn)主要是經(jīng)過調(diào)用上面的發(fā)送SMTP命令函數(shù)SendCommand以及接受SMTP效力器呼應(yīng)的函數(shù)RecvResponse來(lái)實(shí)現(xiàn)的。詳細(xì)的代碼如下所示:8) 郵件發(fā)送程序 SendMail這是整個(gè)程序的中心部分。詳細(xì)的實(shí)現(xiàn)SMTP協(xié)議的程序正是經(jīng)過它一步一步實(shí)現(xiàn)并最終實(shí)現(xiàn)發(fā)送簡(jiǎn)單郵件甚至帶附件的郵件的功能。而它的實(shí)現(xiàn)是調(diào)用以上給出的各個(gè)函數(shù)的結(jié)果。以下就簡(jiǎn)單的經(jīng)過幾個(gè)SMTP命令的格式來(lái)實(shí)現(xiàn)privateboolSendEmail() { //銜接網(wǎng)絡(luò) try { //建立一個(gè)TCP銜接 tc=newTcpClient(mailserver,mailserverport); } catch { MessageBox.Show("銜接失敗","請(qǐng)確認(rèn)"); returnfalse; } //獲取當(dāng)前流的資料 ns=tc.GetStream(); SMTPCodeAdd(); //驗(yàn)證網(wǎng)絡(luò)銜接能否正確 if(RightCodeHT[RecvResponse().Substring(0,3)]==null) { returnfalse; } string[]SendBuffer;
if(ESmtp) { SendBuffer=newString[4]; SendBuffer[0]="EHLO"+mailserver+enter; SendBuffer[1]="AUTHLOGIN"+enter; SendBuffer[2]=Base64Encode(username)+enter; SendBuffer[3]=Base64Encode(password)+enter;if(!Dialog(SendBuffer,"SMTP效力器驗(yàn)證失敗,請(qǐng)核對(duì)用戶名和密碼。")) returnfalse; } else { SendBufferstr="HELO"+mailserver+enter; if(!Dialog(SendBufferstr,"")) returnfalse; } SendBufferstr="MAILFROM:<"+From+">"+enter; if(!Dialog(SendBufferstr,"發(fā)件人地址錯(cuò)誤,或不能為空")) returnfalse; //把傳過來(lái)的收件人的地址分割然后提交給效力器 stringsplit=";";
string[]address=Regex.Split(Recipient,split); SendBuffer=newstring[address.Length]; for(inti=0;i<SendBuffer.Length;i++) { SendBuffer[i]="RCPTTO:<"+address[i]+">"+enter; } if(!Dialog(SendBuffer,"收件人地址有誤")) returnfalse; SendBufferstr="DATA"+enter; if(!Dialog(SendBufferstr,"")) returnfalse; SendBufferstr="From:"+FromName+"<"+From+">"+enter;SendBufferstr+=enter+"."+enter; if(!Dialog(SendBufferstr,"錯(cuò)誤信件信息")) returnfalse; SendBufferstr="QUIT"+enter; if(!Dialog(SendBufferstr,"斷開銜接時(shí)錯(cuò)誤")) returnfalse; //封鎖流對(duì)象 ns.Close(); //封鎖銜接 tc.Close(); FilePath=null; returntrue; }4.2AddExtra類 這個(gè)附加的小類只是提供一些前往當(dāng)前系統(tǒng)時(shí)間,獲取主機(jī)名,主機(jī)IP,有關(guān)協(xié)助等小的功能,在此僅對(duì)協(xié)助信息中的“關(guān)于〞操作函數(shù)稍加闡明。由于它闡明了在CSharp中調(diào)用WindowsAPI函數(shù)所需如下幾個(gè)步驟:4.2.1調(diào)用WindowsAPI所需的命名空間----usingSystem.Runtime.InteropServices;而調(diào)用顯示關(guān)于對(duì)話框的函數(shù)ShellAbout還需求用到兩個(gè)命名空間如下所示---usingSystem.Reflection;---usingSystem.Diagnostics;4.2.2在程序中聲明所需的API函數(shù)[DllImport("shell32.dll")]staticexternintShellAbout(IntPtrhWnd,stringszApp,stringszOtherStuff,IntPtrhIcon);4.2.3在程序中詳細(xì)的運(yùn)用Assemblyass=Assembly.GetExecutingAssembly();FileVersionInfomyVersion=FileVersionInfo.GetVersionInfo(ass.Location);ShellAbout(this.Handle,"郵件收發(fā)系統(tǒng)#","版本"+myVersion.FileMajorPart+"."+myVersion.FileMinorPart+"."+myVersionpanyName,this.Icon.Handle);至此就完成了在CSharp中調(diào)用WindowsAPI函數(shù)的過程。而在此程序中最主要的調(diào)用了兩個(gè)WINDOWSAPI函數(shù),一個(gè)就是動(dòng)態(tài)的獲取圖標(biāo)句柄的函數(shù)SHGetFileInfo()和動(dòng)態(tài)調(diào)用相關(guān)聯(lián)的翻開指定程序的函數(shù)ShellExecute().下面章節(jié)將對(duì)這兩個(gè)函數(shù)進(jìn)展完全的用法解析。4.3程序用到的主要API函數(shù)完全解析 SHGetFileInfo用法完全解析一.函數(shù)名:SHGetFileInfo二.作用:動(dòng)態(tài)的獲取圖標(biāo)的句柄三.在C#中的聲明方式:[DllImport(“shell32.dll〞)]PrivatestaticexternintShGetFileInfo(stringpszPath,uintdwAttributes,refSHFILEINFOpsi,uintcbFileInfo,uintflags);四.各個(gè)參數(shù)的解析:1.pszPath-指定的文件名〔可以是絕對(duì)的途徑,也可以是相對(duì)的途徑〕。 當(dāng)uFlags的取值中不包含SHGFI_PIDL時(shí),可直接指定;否那么 pszPath要經(jīng)過計(jì)算獲得,不能直接指定;2.dwFileAttributes-文件屬性。 僅當(dāng)uFlags的取值包含SHGFI_USEFILEATTRIBUTES時(shí) 有效,普通不用此參數(shù)。3.psfi-前往獲取的文件的信息。是一個(gè)構(gòu)造體類型的變量。它的原型如下所示: privatestructSHFILEINFO { publicIntPtrhIcon; publicintiIcon; publicuintdwAttributes; [MarshalAs(UnmanagedType.LPStr,SizeConst=256)] publicstringszDisplayName; [MarshalAs(UnmanagedType.LPStr,SizeConst=80)] publicstringszTypeName; }; 各個(gè)參數(shù)代表的含義: 1)hIcon-文件的圖標(biāo)句柄。 2)iIcon-圖標(biāo)的系統(tǒng)索引號(hào)。 3)dwAttributes-文件的屬性值。 4)szDisplayName-文件的顯示名〔稱號(hào)的最大長(zhǎng)度〕。 5)szTypeName-文件的類型名〔最大長(zhǎng)度默許是80個(gè)字符〕。4.cbFileInfo-psfi的字節(jié)數(shù)。5.uFlags-指明需求前往的文件信息標(biāo)識(shí)符。常用的是:SHGFI_ICON;//獲得圖標(biāo)
SHGFI_DISPLAYNAME;//獲得顯示名
SHGFI_TYPENAME;//獲得類型名
SHGFI_ATTRIBUTES;//獲得屬性
SHGFI_LARGEICON;//獲得大圖標(biāo)
SHGFI_SMALLICON;//獲得小圖標(biāo)
SHGFI_PIDL;//pszPath是一個(gè)標(biāo)識(shí)符五.補(bǔ)充闡明:函數(shù)SHGetFileInfo()的前往值也隨uFlags的取值變化而有所不同。經(jīng)過調(diào)用SHGetFileInfo()可以由psfi參數(shù)得到文件的圖標(biāo)句柄,但要留意在uFlags參數(shù)中不運(yùn)用SHGFI_PIDL時(shí),SHGetFileInfo()不能獲得"我的電腦"等虛似文件夾的信息。
ShellExecute用法完全解析一.函數(shù)名:ShellExecute二.作用: ShellExecute不僅可以運(yùn)轉(zhuǎn)EXE文件,也可以運(yùn)轉(zhuǎn)曾經(jīng)關(guān) 聯(lián)的文件。三.在C#中的聲明://EntryPoint給出Dll入口點(diǎn)的稱號(hào),假設(shè)沒有給出,那么用方法本身的稱號(hào)。[DllImport("shell32.dll",EntryPoint="SHGetFileInfo")]privatestaticexternintShellExecute(IntPtrhwnd,stringOperation,stringFileName,stringParameters,stringDirectory,intShowCmd);四.各個(gè)參數(shù)解析: ●hWnd:用于指定父窗口句柄。當(dāng)函數(shù)調(diào)用過程出現(xiàn)錯(cuò)誤時(shí),它將作為Windows音訊窗口的父窗口。例如,可以將其設(shè)置為運(yùn)用程序主窗口句柄,即Application.Handle,也可以將其設(shè)置為桌面窗口句柄〔用GetDesktopWindow函數(shù)獲得〕?!馩peration:用于指定要進(jìn)展的操作。其中“open〞操作表示執(zhí)行由FileName參數(shù)指定的程序,或翻開由FileName參數(shù)指定的文件或文件夾;“print〞操作表示打印由FileName參數(shù)指定的文件;“explore〞操作表示閱讀由FileName參數(shù)指定的文件夾。當(dāng)參數(shù)設(shè)為nil時(shí),表示執(zhí)行默許操作“open〞。●FileName:用于指定要翻開的文件名、要執(zhí)行的程序文件名或要閱讀的文件夾名?!馪arameters:假設(shè)FileName參數(shù)是一個(gè)可執(zhí)行程序,那么此參數(shù)指定命令行參數(shù),否那么此參數(shù)應(yīng)為nil或PChar(0)?!馜irectory:用于指定默許目錄?!馭howCmd:假設(shè)FileName參數(shù)是一個(gè)可執(zhí)行程序,那么此參數(shù)指定程序窗口的初始顯示方式,否那么此參數(shù)應(yīng)設(shè)置為0。假設(shè)ShellExecute函數(shù)調(diào)用勝利,那么前往值為被執(zhí)行程序的實(shí)例句柄。假設(shè)前往值小于32,那么表示出現(xiàn)錯(cuò)誤。五.補(bǔ)充闡明 上述僅僅是ShellExecute函數(shù)的規(guī)范用法5.軟件運(yùn)轉(zhuǎn)界面5.1新建郵件帳號(hào)用戶翻開軟件之后,需求新建一個(gè)郵件
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度新能源儲(chǔ)能項(xiàng)目農(nóng)民工勞務(wù)合同規(guī)范4篇
- 二零二五版年薪制勞動(dòng)合同:大數(shù)據(jù)分析行業(yè)專家協(xié)議4篇
- 2025年度農(nóng)行房貸利率調(diào)整專項(xiàng)合同書2篇
- 二零二五白蟻滅治與老舊建筑改造服務(wù)合同3篇
- 二零二五年度建筑工程合同履行補(bǔ)充協(xié)議范本3篇
- 個(gè)人承包旅游景區(qū)開發(fā)與經(jīng)營(yíng)合同(2024版)3篇
- 二零二五年度節(jié)能環(huán)保門窗定制采購(gòu)合同2篇
- 二手住宅買賣合同(2024版)范例2篇
- 二零二五版木托盤租賃與物流信息化建設(shè)合同4篇
- 管理決策知到智慧樹章節(jié)測(cè)試課后答案2024年秋山西財(cái)經(jīng)大學(xué)
- 壞死性筋膜炎
- 2024輸血相關(guān)知識(shí)培訓(xùn)
- 整式的加減單元測(cè)試題6套
- 股權(quán)架構(gòu)完整
- 山東省泰安市2022年初中學(xué)業(yè)水平考試生物試題
- 注塑部質(zhì)量控制標(biāo)準(zhǔn)全套
- 人教A版高中數(shù)學(xué)選擇性必修第一冊(cè)第二章直線和圓的方程-經(jīng)典例題及配套練習(xí)題含答案解析
- 銀行網(wǎng)點(diǎn)服務(wù)禮儀標(biāo)準(zhǔn)培訓(xùn)課件
- 二年級(jí)下冊(cè)數(shù)學(xué)教案 -《數(shù)一數(shù)(二)》 北師大版
- 晶體三極管資料
- 銀行內(nèi)部舉報(bào)管理規(guī)定
評(píng)論
0/150
提交評(píng)論