版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> JavaMail FrameWork for developing internet-based e-mail client applications</p><p><b> 原文:</b></p><p> E-mail functionality is an important system requirement in areas s
2、uch as e-commerce, customer care, work-flow management and unified messaging. In addition, some application architectures may need to support not only standard mail protocols but also proprietary ones. If you're char
3、ged with the task of developing an e-mail client application in Java, you have a number of architectural and design options: building your own services layer to support multiple mail protocols, purchasing third-party c&l
4、t;/p><p> This article focuses on the JavaMail framework for developing Internet-based e-mail client applications. The JavaMail API shields application developers from implementation details of specific mail p
5、rotocols by providing a layer of abstraction designed to support current e-mail standards and any future enhancements. JavaMail increases a developer's productivity by allowing the developer to focus on the business
6、logic of an application rather than on mail protocol implementation. It provides a pl</p><p> Overview of Internet Mail Protocols Before getting into the details of JavaMail, a quick overview of some
7、messaging terms and Internet e-mail protocols (IMAP, POP, SMTP) is in order. A message is described in terms of a header and content. A message header comprises information such as sender (from), recipient (to), and mess
8、age ID (a unique message identifier). A message's content is the actual message body and can comprise multiple parts in the form of text and attachments, as shown in Figure </p><p><b> Figure
9、 1:</b></p><p> An e-mail client is used to transfer messages to and from an e-mail server, which is responsible for sending and receiving e-mail messages across the Internet. These servers store
10、 a user's messages either permanently or until retrieved by an e-mail client.</p><p> To develop an e-mail client you need to deal with protocols for sending and receiving messages. As shown in Figure 2
11、, the common protocol for sending Internet e-mail messages is SMTP (Simple Mail Transfer Protocol). The original SMTP specification limited messages to a certain line length and allowed only 7-bit ASCII characters. The M
12、IME (Multipurpose Internet Mail Extensions) specification builds on SMTP by removing the maximum line length for messages and allowing new types of content (e.g., i</p><p><b> Figure 2:</b>
13、</p><p> Two types of protocols are used to retrieve messages from Internet mail servers: POP3 (Post Office Protocol 3) and IMAP4 (Internet Message Access Protocol 4). Although POP3 is more widely used than
14、 IMAP4, the latter has a number of advantages. First, IMAP supports multiple folders on a remote mail server whereas POP3 supports only the Inbox folder. Second, IMAP supports message status flags (e.g., indicates whethe
15、r a message has been previously seen); POP3 doesn't. These types of protocol featur</p><p> JavaMail provides implementations of SMTP, IMAP4 and POP3. For more information on these Internet mail protoco
16、ls, you can consult the pertinent RFCs.</p><p> JavaMail Architecture Now that you have a basic understanding of Internet mail terms, we can begin to discuss the JavaMail architecture. As shown in Fig
17、ure 3, the architecture can be described in terms of three main layers. JavaMail's layered architecture allows clients to use the JavaMail API with different message access protocols (POP3, IMAP4) and message transpo
18、rt protocols (SMTP).</p><p><b> Figure 3:</b></p><p> The top layer is the application layer that uses the JavaMail API. The second layer is the JavaMail API that defines a se
19、t of abstract classes and interfaces for supporting e-mail client functionality. This is the layer that frees a developer from having to deal with protocol-specific complexities. JavaMail provides concrete subclasses of
20、these abstract classes for Internet mail. The JavaMail API layer depends on concrete implementations of protocols.</p><p> The implementation layer forms the third layer of the JavaMail architecture. Since
21、JavaMail is protocol independent, it's up to service providers to implement specific message access and message transfer protocols. Service provider implementations play a role similar to that of JDBC drivers. A prov
22、ider registry allows service providers to register their protocol implementations to be used by JavaMail APIs. The JavaMail Web site has more information on third-party service providers.</p><p> JavaBeans
23、Activation Framework JavaMail interacts with message content through an intermediate layer called the JavaBeans Activation Framework (JAF), part of the Glasgow specification (a future release of the JavaBeans compo
24、nent model specification). In terms of dealing with e-mail messages, JAF provides a uniform way of determining the type of a message's content and encapsulating access to it. The JAF is implemented as a standard Java
25、 extension. Sun provides a royalty-free implementation of J</p><p> JAF is used to get and set a message's text and attachments. JavaMail provides convenient methods to interact with JAF. For example, M
26、imeMessage's setText() method can be used to set a string as a message's content with a MIME type of "text/plain." Another example is MimeMessage's getContent() method, which returns a message's
27、 content as a Java object by invoking methods on JAF's DataHandler class.</p><p> JAF can also be used to view e-mail attachments such as a text file (.txt) or an image (.gif) by instantiating a JavaBea
28、n that supports a particular command (e.g., view) on a specific type of message content. As shown below, the JAF DataSource object, which encapsulates the attachment, is used to create a DataHandler object. The DataHandl
29、er object uses a CommandInfo object to retrieve the pertinent JavaBean that can be used to perform a specific operation on an attachment. The JavaBean component</p><p> // file name represents the attachmen
30、tFileDataSource attachFds = new FileDataSource(attachmentFilename);DataHandler dh = new DataHandler(attachFds);CommandInfo viewCi = dh.getCommand("view");Frame attachmentWindow = new Frame("View Attach
31、ment");// add the bean to view the attachment to the main windowattachmentWindow.add((Component)dh.getBean(viewCi));</p><p> Examples Using JavaMail You now have a basic overview of the JavaMai
32、l architecture and JAF so we can discuss the main JavaMail classes and methods needed to support an e-mail client. Table 1 describes some fundamental JavaMail classes.</p><p> To illustrate the use of JavaM
33、ail in an e-mail client application, I'll consider four major use cases: configuring a connection to e-mail servers, sending a message, getting messages from an e-mail server and deleting messages.</p><p&g
34、t; Configuring a Connection to an e-Mail Server Before you can send or receive messages from your mail server, you need to establish a mail session between the mail client and the remote mail servers. Mail user pr
35、operties are used to initiate a connection to mail servers. The Session class can manage the mail user properties used by the JavaMail API.</p><p> // Setting mail user propertiesmailProperties = new Prope
36、rties();mailProperties.put("mail.transport.protocol", "smtp");mailProperties.put("mail.smtp.host", "someSmtpHost");</p><p> The Session object is a factory for Stor
37、e and Transport objects. A Session and Store object can be obtained as follows:</p><p> // Get a Session objectSession session = Session.getDefaultInstance(mailProperties, null);// Get a Store objectStor
38、e store = session.getStore();</p><p> One issue to consider as you design the application architecture of your e-mail client is the dependency between your business layer and JavaMail. To reduce tight coupl
39、ing between your application's business layer and the JavaMail subsystem, the Facade design pattern can be used. For example, mail user configuration can be passed into a Facade (singleton) to assemble the appropriat
40、e JavaMail objects (Session, Transport and Store) and perform any other initialization (e.g., security). As a result</p><p> A use case pertaining to e-mail server connectivity is support for "disconne
41、cted e-mail operation," which involves maintaining e-mail message stores on both the remote server and a local client, performing operations on both stores, and then being able to synchronize these two stores. JavaS
42、oft's IMAP provider implements interfaces that can be used to support disconnected operation.</p><p> At the time of this writing, secure messaging (e.g., support for S/MIME) is currently missing from J
43、avaMail. S/MIME builds security on top of MIME to provide secure electronic messaging for Internet mail in the form of authentication and data security. Although not available in JavaMail, it can be obtained from a thir
44、d party. The JavaMail Web site has more information on this and other third-party Web sites.</p><p> Sending e-Mail Messages Once a mail session has been established, an e-mail message can be created
45、and sent. First, a MimeMessage object needs to be constructed. Then, as shown below, the message object is initialized with the recipient's e-mail address(es), the subject of the message and the message text. The mes
46、sage is then sent using the Transport object.</p><p> // Create new messageMessage msg = new MimeMessage(session);// Initialize the messagemsg.setFrom(new InternetAddress(senderEmailAddress));msg.setRec
47、ipients(Message.RecipientType.TO,InternetAddress.parse (recipientEmail,false));msg.setSubject(subject);msg.setText(messageText);Transport.send(msg);</p><p> JavaMail can also be used for developing
48、 mail-enabled servlets (e.g., using a browser to send e-mail to a support center). An important architectural consideration is reuse of the mail functionality in your business layer by both Web and Java clients. This can
49、 be accomplished by using a layered architecture and appropriate design patterns. For example, a simple mail Facade that shields a client from the JavaMail API can be used by both a Java client and a servlet to send an e
50、-mail messge; a clie</p><p> When sending messages, users assume that e-mail clients support address books, but JavaMail currently does not. However, the JavaMail API doesn't preclude you from developin
51、g your own mechanism (e.g., using XML - for implementing local address books or using JNDI to access an LDAP-enabled server for global address book features). Getting e-Mail Messages</p><p> After you'v
52、e successfully established a mail session, an e-mail client can retrieve your e-mail messages. To retrieve your messages use the Session object to obtain a Store object, which can be used to obtain the Inbox folder, as s
53、hown below.</p><p> // Opening the Inbox Folderstore = session.getStore();store.connect();Folder folder = store.getFolder("INBOX");folder.open(Folder.READ_WRITE);</p><p> After a
54、 folder has been successfully opened, it's used to get message totals and the messages, as illustrated in the following code snippet.</p><p> // Getting message totals and messages from a folderint tot
55、alMessages = folder.getMessageCount();Message[] msgs = folder.getMessages();</p><p> Note that the Message objects returned from the getMessages() method call are designed to be lightweight objects. For ex
56、ample, the Message objects returned could comprise only message header details. Retrieval of the actual message content is deferred until the message content is actually used. Thus the getMessages() method isn't desi
57、gned to be a resource-intensive operation.</p><p> A typical e-mail client first displays a summary of messages in the form of header details such as sender (from), recipients (to), subject and sent date. A
58、 summary line for each message can be obtained as follows.</p><p> Address[] from = msgs[i].getFrom();Address[] to = msgs[i].getRecipients(Message.RecipientType.TO;String subject = msgs[i].getSubject();D
59、ate d = msgs[i].getSentDate();</p><p> After viewing the message summary, a user typically decides to view the actual message content in the form of text and/or attachments. Now we're ready to get a mes
60、sage's content, which can be retrieved in the form of an object. The retrieved object depends on the type of content. If the content is a message with multiple attachments, a Multipart object (a container of BodyPart
61、 objects) is returned. If the Part's content is text, then a simple String object is returned. To retrieve a message's co</p><p> Object o = part.getContent();If (o instanceof String) { // c
62、ontent is text} else if (o instanceof Multipart) { // recursively iterate over container's contents to retrieve attachments} else if (o instanceof Message) { // message content could be a message itse
63、lf}</p><p> You've now seen how messages are retrieved using JavaMail. If your application supports both IMAP and POP, you may need to develop different algorithms to download messages, depending on yo
64、ur particular use case and performance requirements. For example, when developing applications for use with low bit-rate clients using POP (which doesn't maintain flags to indicate unread messages), downloading all m
65、essages each time becomes a performance issue. Thus you may need an algorithm that uses protoco</p><p> Each of these different download algorithms can be encapsulated as Strategy classes (Strategy design p
66、attern) that share a common interface. A Strategy Factory can return strategy objects that can be used to download messages, depending on particular user configurations. This approach allows you to switch from one downlo
67、ad algorithm to another, depending on the user configuration, and avoid having to use protocol-specific conditional statements. For more information on the Strategy and other des</p><p> When you download m
68、essages from a server, a feature that's available in some popular e-mail clients is an Inbox Assistant to process incoming messages (e.g., delete messages based on user-specified rules). Currently, JavaMail doesn'
69、;t provide direct support for features such as automated message filtering.</p><p> Deleting e-Mail Messages A standard use case for e-mail clients is deleting a message. Using JavaMail, deleting mess
70、ages from a folder is a simple two-step process. First, messages are marked for deletion. Those messages that have been marked are then deleted from a folder by either explicitly invoking a Folder's expunge() method
71、or closing a folder with the expunge parameter of the close() method set to true.</p><p> // Set delete message flagmessage.setFlag(Flags.Flag.DELETED, true);// Delete marked messages from folder folder.c
72、lose(true);</p><p> Conclusion This short introduction should help you use JavaMail 1.1 to develop an e-mail client application. JavaMail is a relatively new framework that will inevitably continue to
73、 mature and evolve. Nevertheless, it can be used to rapidly develop an e-mail client application using a higher-level API without having to perform the arduous task of implementing specific mail protocols and developing
74、an architectural infrastructure to support multiple protocols. You can obtain more information on J</p><p> Resources JavaMail: www.javasoft.com/products/javamail/index.htmlJavaBeans Activation
75、Framework: www.javasoft.com/beans/glasgow/jaf.htmlGamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995).Design Patterns: Elements of Reusable Object-Oriented Software.</p><p> Author Bio I
76、an Moraes, Ph.D., is a principal engineer at Glenayre Electronics, where he works on the architecture and design of a unified messaging system. Ian has developed client/server systems for the telecommunications and finan
77、cial services industries. He can be reaced at: imoraes@atlanta.glenayre.com</p><p> All Rights Reserved Copyright © 2004 SYS-CON Media, Inc. E-mail: info@sys-con.com&
78、lt;/p><p> Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, I
79、nc.</p><p><b> 譯文:</b></p><p> 電子郵件是電子商務(wù)、顧客服務(wù)、工作流程管理和信息統(tǒng)計的一項重要系統(tǒng)要求。此外, 某些應(yīng)用程序體系結(jié)構(gòu)可能不僅需要支持電子郵件的標(biāo)準(zhǔn)協(xié)議而且還需要支持某些專利特權(quán)。如果你承擔(dān)了JAVA方向的電子郵件客戶端應(yīng)用程序的開發(fā),那么你會有很多的架構(gòu)和設(shè)計方案,比如構(gòu)建自己的服務(wù)層從而達(dá)到支持多種電子郵件協(xié)議
80、,通過購買第三方的組件獲得其所提供的電子郵件功能或是使用java軟件的javamail框架。</p><p> 本文集中探討以JavaMail框架為基礎(chǔ)發(fā)展互聯(lián)網(wǎng)的電子郵件客戶端應(yīng)用程序的開發(fā)。</p><p> 來自對這種特殊的電子郵件協(xié)議的實施細(xì)節(jié)的JavaMail 應(yīng)用程序界面程序開發(fā)人員通過提供一層抽象的設(shè)計支持當(dāng)前的電子郵件的標(biāo)準(zhǔn)和對未來的改進(jìn)從而在細(xì)節(jié)上來完善這種特殊的電子
81、協(xié)議。JavaMail通過允許開發(fā)人員只關(guān)注應(yīng)用程序的業(yè)務(wù)邏輯而不用考慮電子郵件協(xié)議的執(zhí)行來提高了開發(fā)人員的工作效率。它提供了一個與電子協(xié)議無關(guān)的平臺,這意味著增加了電子郵件在客戶端應(yīng)用的功能。JavaMail 1.1版是jdk/jre1.1版或更高版本的一個標(biāo)準(zhǔn)的Java延伸和要求了。</p><p> 互聯(lián)網(wǎng)電子郵件協(xié)議的概述</p><p> 在進(jìn)入JavaMail的細(xì)節(jié)之前,對
82、通訊協(xié)議條款和互聯(lián)網(wǎng)電子郵件有做一個簡明的綜述是很有必要的。一個消息的由消息頭和消息內(nèi)容來描述。一個消息頭包含的信息,如發(fā)送者(from),收件人(to),信息身份驗證(一個信息獨特的標(biāo)識符)。消息的內(nèi)容是是消息真正的主體,可以是以多種形式,包括文本和附件,如圖所示</p><p><b> 1.</b></p><p><b> 圖1</b>
83、;</p><p> 一個電子郵件用戶端是用來進(jìn)行信息在電子郵件服務(wù)器和因特網(wǎng)之間郵件接收和發(fā)送傳遞的。這些服務(wù)器會永久的存儲用戶的郵件信息直到用戶在電子郵件客戶端讀取出郵件為止。</p><p> 要開發(fā)一個電子郵件客戶端需要你對消息在電子協(xié)議的發(fā)送和接收進(jìn)行處理,如圖2,STMP是通用的電子郵件通信協(xié)議,最初的STMP規(guī)格限制了消息的特定長度并只允許7位ASCII字符。MIME(多
84、用途網(wǎng)際郵件擴充協(xié)議)規(guī)格通過除去最大消息的最大長度限定并允許新型數(shù)據(jù)內(nèi)容(例如,二進(jìn)制圖像文件)被包括在電子郵件中來建設(shè)STMP。MIME通過在消息頭定義額外附加的內(nèi)容去描述新型內(nèi)容和消息結(jié)構(gòu)。MIME定義了消息頭的內(nèi)容類型去識別消息的類型種類。例如,一個含有HTML附件內(nèi)容的郵件在消息標(biāo)題上會被設(shè)置為“文本/HTML” 。SMTP和MIME往往會被一起使用來發(fā)送互聯(lián)網(wǎng)電子郵件。</p><p><b&g
85、t; 圖2</b></p><p> 有兩種電子郵件協(xié)議時用來從網(wǎng)絡(luò)電子郵件服務(wù)器獲取電子郵件:POP3(郵局協(xié)3)和IMAP4(網(wǎng)絡(luò)信息訪問協(xié)議4)。盡管POP3比IMAP4使用的更為廣泛,但是后者比前者有更多的優(yōu)勢。首先,IMAP支持多個文件夾在遠(yuǎn)程服務(wù)器上然而POP3只能支持收件箱文件夾在遠(yuǎn)處服務(wù)器上。其次,IMAP支持消息狀態(tài)的標(biāo)記(例如,標(biāo)記消息是否已經(jīng)被讀取過);但是POP3不能。這類
86、協(xié)議的特點是著重考慮設(shè)計你的應(yīng)用。</p><p> JavaMail提供了對SMTP,POP3和IMAP4的實現(xiàn)。在電子郵件協(xié)議方面提供了更多信息 ,您可以參考一下相關(guān)的協(xié)議規(guī)范文件(rfc)。</p><p> JavaMail體系結(jié)構(gòu)</p><p> 既然對互聯(lián)網(wǎng)電子郵件協(xié)議有了基本的了解,那么我們就開始討論JavaMail體系結(jié)構(gòu)</p>
87、<p> 如圖3,這個體系結(jié)構(gòu)可以從三個主要層次描述。JavaMail的分層架構(gòu),可以讓客戶端結(jié)合不同的信息訪問協(xié)議(POP3、IMAP4)來使用JavaMail應(yīng)用程序界面。</p><p><b> 圖3</b></p><p> 頂層是應(yīng)用層,就是使用JavaMail的應(yīng)用程序界面。第二層就是定義了一組抽象類和接口功能支持電子郵件JavaMa
88、il應(yīng)用程序界面客戶端。這一層使得開發(fā)人員從必須處理的特殊復(fù)雜的協(xié)議中解脫出來。JavaMail提供了網(wǎng)絡(luò)電子郵件抽象類的具體子類。JavaMail應(yīng)用程序界面層的實現(xiàn)取決于具體的協(xié)議。</p><p> 實施層形成了JavaMail架構(gòu)的第三層。JavaMail之所以能獨立于電子郵件協(xié)議,這取決于服務(wù)提供商提供的特定的信息獲取和信息傳輸協(xié)議來實現(xiàn)。服務(wù)提供商實際上扮演著類似于JDBC驅(qū)動程序這么一個角色。提供
89、程序的注冊表中允許服務(wù)提供商注冊登記他們的協(xié)議以達(dá)到讓JavaMail應(yīng)用程序使用的目的。JavaMail的官方網(wǎng)站中有更多關(guān)于第三方服務(wù)提供商的信息。</p><p> JavaBeans活動框架</p><p> JavaMail與信息內(nèi)容之間的交互是通過一個稱為JavaBeans活動框架(JAF)的中間層,它是格拉斯哥規(guī)格(JavaBeans組件模型規(guī)格的下一個版本)的一部分。從
90、處理電子郵件消息來說,JAF提供了一個判斷電子消息內(nèi)容和使用的封裝類型的統(tǒng)一方式。JAF可以作為JAVA標(biāo)準(zhǔn)延伸的的實施。SUN公司提供了對JDK1.1或者是更高版本的JAF實施。</p><p> JAF通常是用來獲取和設(shè)置信息的文本和附件。JavaMail提供了與JAF互動的方便方法。例如,MimeMessage的setText()方法可用于設(shè)置一個字串作為MIME “文本文件”類型信息的內(nèi)容。另一個例子是
91、MimeMessage的getContent()方法,它將電子郵件信息返回的內(nèi)容,作為JAF DataHandler(數(shù)據(jù)處理)類的方法調(diào)用的一個Java的對象。</p><p> JAF還可以通過在一個有特殊類型內(nèi)容的電子郵件上實例化一個支持特定命令(例如瀏覽)的實體來瀏覽電子郵件附件如一個文本文件(.txt),或一個圖像(.gif)。如下圖所示, JAF 被封裝在附件中的DataSource對象,被用來創(chuàng)建
92、一個DataHandler對象。DataHandler對象使用的一個CommandInfo對象來檢索可以用來在一個附件上做具體操作的JavaBean實體。JavaBean的組件可以用以下的代碼段添加到一個框架中。目前,關(guān)于實現(xiàn)的JAF-aware JavaBeans可以瀏覽文字、GIF和JPEG文件。CommandInfo,DataSource和DataHandler等都是JAF類。</p><p> // f
93、ile name represents the attachmentFileDataSource attachFds = new FileDataSource(attachmentFilename);DataHandler dh = new DataHandler(attachFds);CommandInfo viewCi = dh.getCommand("view");Frame attachmentWin
94、dow = new Frame("View Attachment");// add the bean to view the attachment to the main windowattachmentWindow.add((Component)dh.getBean(viewCi));</p><p> 現(xiàn)在你對JavaMail架構(gòu)和活動框架有了一個基本的概念,接下來我們將討論Java
95、Mail中支持電子郵件客戶端所必須的主要類和方法。表1中描述了JavaMail基本的一些類。</p><p> 我將考慮四個主要用例:連接到電子郵件服務(wù)器的配置、發(fā)送電子郵件消息、從郵件服務(wù)器上獲取和刪除電子郵件消息來說明在電子郵件客戶端上對JavaMail的應(yīng)用。</p><p> 連接到電子郵件服務(wù)器的配置</p><p> 在你從電子郵件服務(wù)器上發(fā)送和接
96、收電子郵件消息之前,你需要在電子郵件客戶端和電子郵件服務(wù)器上建立一個電子郵件會話。電子郵件用戶名的功能是用來對郵件服務(wù)器發(fā)起一個連接的。會話類能管理郵件用戶名被JavaMail應(yīng)用程序的使用。</p><p> // Setting mail user propertiesmailProperties = new Properties();mailProperties.put("mail.tran
97、sport.protocol", "smtp");mailProperties.put("mail.smtp.host", "someSmtpHost");</p><p> 會話對象時存儲和運輸對象的工廠。一個會話和存儲對象可以按照以下被創(chuàng)建:</p><p> // Get a Session objectS
98、ession session = Session.getDefaultInstance(mailProperties, null);// Get a Store objectStore store = session.getStore();</p><p> 在你設(shè)計你的應(yīng)用架構(gòu)時時需要考慮的一個問題就是你的電子郵件客戶端事是依賴于業(yè)務(wù)邏輯層和JavaMail之間的。為了降低你的應(yīng)用程序和業(yè)務(wù)層和JavaM
99、ail子系統(tǒng)之間聯(lián)系的耦合度你可以使用立體設(shè)計模式。例如,郵件用戶名配置可以傳遞到一個正面(單例模式)去組裝適當(dāng)?shù)腏avaMail對象(會話、傳遞和存儲),并完成任何其他的初始化(如安全性)。因此,</p><p> 介于你的業(yè)務(wù)層類和JavaMail子系統(tǒng)的依賴關(guān)系將降低,從而你的業(yè)務(wù)層可以使用一個簡單的接口例如MailFacade的配置(屬性)。</p><p> 一個說明到電子郵
100、件存儲設(shè)備對在遠(yuǎn)程服務(wù)器和本地客戶端上電子郵件服務(wù)器對斷開和連接操作的支持,并且能同步操作的用例,。JavaSoft IMAP提供的接口可以用來支持?jǐn)嚅_連接的操作。</p><p> 在寫這篇文章的時候, JavaMail的電子通訊安全(例如,對S / MIME支持)性正在丟失。S / MIME(安全的多目標(biāo)郵件擴展)將其安全性建立在MIME(郵件擴展)上面來為網(wǎng)絡(luò)電子郵件以消息驗證和數(shù)據(jù)安全性提供安全的電子通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論