设为首页 收藏本站
查看: 689|回复: 0

[经验分享] net读取exchange数据

[复制链接]

尚未签到

发表于 2015-9-11 08:01:06 | 显示全部楼层 |阅读模式
  大部分的参考是来自MSDN:
  http://msdn.microsoft.com/en-us/library/exchangewebservices(EXCHG.80).aspx
  2007版的Exchange服务器提供了webservice,我们可以方便的在.NET程序中添加该引用,然后就可以方便的实现邮件的抓取,发送,删除等功能。我测试是在控制台程序中使用该webservice,步骤如下:
  1 新建一个站点,然后添加 exchange webservice 的引用, 输入邮件服务器的 OWA 地址:http://yourmailserver/EWS/Services.wsdl ,如果是在公司的内部域中,添加的过程中要求输入你的域帐号和密码。
  
  
  
  
  
  2 添加成功以后再项目中导入该命名空间以其他必须的命名空间 ;
  
  
  3 下面就是具体的代码,具体的请看注释:
  发送邮件:
  
  1           public   static   void  CreateEmail( string  userName,  string  passWord,  string  domain,  string  url,  string  mailFrom,  string  mailTo)
2             {
3               //  Create service binding.
4               //  建立service绑定
5              ExchangeServiceBinding esb  =   new  ExchangeServiceBinding();
6              esb.Credentials  =   new  NetworkCredential(userName, passWord, domain);
7              esb.Url  =  url;
8  
9               //  Create the CreateItem request.
10              CreateItemType createItemRequest  =   new  CreateItemType();
11  
12               //  Specifiy how the created items are handled
13               //  如何处理邮件
14              createItemRequest.MessageDisposition  =  MessageDispositionType.SendAndSaveCopy;
15              createItemRequest.MessageDispositionSpecified  =   true ;
16  
17               //  Specify the location of sent items.  
18              createItemRequest.SavedItemFolderId  =   new  TargetFolderIdType();
19              DistinguishedFolderIdType sentitems  =   new  DistinguishedFolderIdType();
20              sentitems.Id  =  DistinguishedFolderIdNameType.sentitems;
21              createItemRequest.SavedItemFolderId.Item  =  sentitems;
22  
23               //  Create the array of items.
24              createItemRequest.Items  =   new  NonEmptyArrayOfAllItemsType();
25  
26               //  Create a single e-mail message.
27               //  新建一封邮件message对象
28              MessageType message  =   new  MessageType();
29              message.Subject  =   " Tommy Test " ;
30              message.Body  =   new  BodyType();
31              message.Body.BodyType1  =  BodyTypeType.Text;
32              message.Body.Value  =   " This is tommy's test use exchange webservice " ;
33              message.ItemClass  =   " IPM.Note " ;
34              message.Sender  =   new  SingleRecipientType();
35              message.Sender.Item  =   new  EmailAddressType();
36              message.Sender.Item.EmailAddress  =  mailFrom;
37              message.ToRecipients  =   new  EmailAddressType[ 1 ];
38              message.ToRecipients[ 0 ]  =   new  EmailAddressType();
39              message.ToRecipients[ 0 ].EmailAddress  =  mailTo;
40              message.Sensitivity  =  SensitivityChoicesType.Normal;
41  
42               //  Add the message to the array of items to be created.
43              createItemRequest.Items.Items  =   new  ItemType[ 1 ];
44              createItemRequest.Items.Items[ 0 ]  =  message;
45  
46               try
47                 {
48                   //  Send the request to create and send the e-mail item, and get the response.
49                  CreateItemResponseType createItemResponse  =  esb.CreateItem(createItemRequest);
50  
51                   //  Determine whether the request was a success.
52                   if  (createItemResponse.ResponseMessages.Items[ 0 ].ResponseClass  ==  ResponseClassType.Error)
53                     {
54                       throw   new  Exception(createItemResponse.ResponseMessages.Items[ 0 ].MessageText);
55                  }
56                   else
57                     {
58                      Console.WriteLine( " Item was created " );
59                      Console.ReadLine();
60                  }
61              }
62               catch  (Exception e)
63                 {
64                  Console.WriteLine(e.Message);
65                  Console.ReadLine();
66              }
67          }

  抓取以及删除邮件:
  1    public   static   void  GetMailMessage( string  userName,  string  passWord,  string  domain,  string  url)
  2             {
  3               //  绑定exchange服务器
  4              ExchangeServiceBinding exchangeServer  =   new  ExchangeServiceBinding();
  5              ICredentials creds  =   new  NetworkCredential(userName, passWord, domain);
  6  
  7               //  建立信任连接
  8              exchangeServer.Credentials  =  creds;
  9              exchangeServer.Url  =  url;
10  
11               //  定义邮件的收件箱
12              DistinguishedFolderIdType[] folderIDArray  =   new  DistinguishedFolderIdType[ 1 ];
13              folderIDArray[ 0 ]  =   new  DistinguishedFolderIdType();
14              folderIDArray[ 0 ].Id  =  DistinguishedFolderIdNameType.inbox;
15  
16              PathToUnindexedFieldType ptuftDisplayName  =   new  PathToUnindexedFieldType();
17              ptuftDisplayName.FieldURI  =  UnindexedFieldURIType.folderDisplayName;
18  
19              PathToExtendedFieldType pteftComment  =   new  PathToExtendedFieldType();
20              pteftComment.PropertyTag  =   " 0x3004 " ;  //  PR_COMMENT
21              pteftComment.PropertyType  =  MapiPropertyTypeType.String;
22  
23               //  定义GetFolderType对象,设置相应属性
24              GetFolderType myfoldertype  =   new  GetFolderType();
25              myfoldertype.FolderIds  =  folderIDArray;
26              myfoldertype.FolderShape  =   new  FolderResponseShapeType();
27              myfoldertype.FolderShape.BaseShape  =  DefaultShapeNamesType.IdOnly;
28              myfoldertype.FolderShape.AdditionalProperties  =   new  BasePathToElementType[ 2 ];
29              myfoldertype.FolderShape.AdditionalProperties[ 0 ]  =  ptuftDisplayName;
30              myfoldertype.FolderShape.AdditionalProperties[ 1 ]  =  pteftComment;
31  
32               //  获取服务器中的文件夹的集合
33              GetFolderResponseType myFolder  =  exchangeServer.GetFolder(myfoldertype);
34  
35               //  获取收件箱
36              FolderInfoResponseMessageType firmtInbox  =
37                  (FolderInfoResponseMessageType)myFolder.ResponseMessages.Items[ 0 ];
38  
39               //  显示收件箱
40              Console.WriteLine( string .Format( " got folder: {0} " , firmtInbox.Folders[ 0 ].DisplayName));
41  
42  
43              PathToUnindexedFieldType ptuftSubject  =   new  PathToUnindexedFieldType();
44              ptuftSubject.FieldURI  =  UnindexedFieldURIType.itemSubject;
45  
46              PathToUnindexedFieldType ptuftBody  =   new  PathToUnindexedFieldType();
47              ptuftBody.FieldURI  =  UnindexedFieldURIType.itemAttachments;
48  
49              PathToExtendedFieldType pteftFlagStatus  =   new  PathToExtendedFieldType();
50              pteftFlagStatus.PropertyTag  =   " 0x1090 " ;  //  PR_FLAG_STATUS
51              pteftFlagStatus.PropertyType  =  MapiPropertyTypeType.Integer;
52  
53               //  定义FindItemType对象,准备获取收件箱中的集合
54              FindItemType findItemRequest  =   new  FindItemType();
55              findItemRequest.Traversal  =  ItemQueryTraversalType.Shallow;
56              findItemRequest.ItemShape  =   new  ItemResponseShapeType();
57              findItemRequest.ItemShape.BaseShape  =  DefaultShapeNamesType.AllProperties;
58  
59  
60              findItemRequest.ParentFolderIds  =   new  FolderIdType[ 1 ];
61              findItemRequest.ParentFolderIds[ 0 ]  =  firmtInbox.Folders[ 0 ].FolderId;
62  
63               //  获取邮件
64              FindItemResponseType firt  =  exchangeServer.FindItem(findItemRequest);
65  
66               //  循环迭代每一封邮件
67               foreach  (FindItemResponseMessageType firmtMessage  in  firt.ResponseMessages.Items)
68                 {
69                   //  如果包含邮件,显示出来
70                   if  (firmtMessage.RootFolder.TotalItemsInView  >   0 )
71                     {
72                       //  循环迭代每一封邮件详细信息
73                       foreach  (ItemType it  in  ((ArrayOfRealItemsType)firmtMessage.RootFolder.Item).Items)
74                         {
75                          Console.WriteLine( string .Format( " 邮件标题: {0}  " , it.Subject));
76                          Console.WriteLine( string .Format( " 发件人: {0}  " ,((MessageType)(it)).From.Item.Name));
77                          Console.WriteLine( string .Format( " 收件人: {0}  " , it.DisplayTo));
78                          Console.WriteLine( string .Format( " 抄送: {0}  " , it.DisplayCc));
79                          Console.WriteLine( string .Format( " 大小: {0}  " , it.Size.ToString()));
80                          Console.WriteLine( string .Format( " 重要性: {0}  " , it.Importance.ToString()));
81                          Console.WriteLine( string .Format( " 是否已读: {0}  " , ((MessageType)(it)).IsRead.ToString()));
82                          Console.WriteLine( string .Format( " 是否有附件: {0}  " , it.HasAttachments.ToString()));
83                           // Console.WriteLine(string.Format("发送时间:{0}", it.DateTimeSent.ToString()));
84                          Console.WriteLine( string .Format( " 接收时间: {0}  " , it.DateTimeReceived.ToString()));
85                          
86                          
87                           //  通过GetItemType对象来得到邮件的正文
88                          GetItemType getItemRequest  =   new  GetItemType();
89                           //  设置必要的属性
90                          getItemRequest.ItemIds  =   new  BaseItemIdType[ 1 ];
91                          getItemRequest.ItemIds[ 0 ]  =  (BaseItemIdType)it.ItemId;
92                          getItemRequest.ItemShape  =   new  ItemResponseShapeType();
93                          getItemRequest.ItemShape.BaseShape  =  DefaultShapeNamesType.AllProperties;
94                          getItemRequest.ItemShape.IncludeMimeContent  =   true ;
95  
96                           //  获得服务器的相应
97                          GetItemResponseType getItemResponse  =  exchangeServer.GetItem(getItemRequest);
98  
99                           //  得到邮件体
100                          ItemInfoResponseMessageType getItemResponseMessage  =
101                                                getItemResponse.ResponseMessages.Items[ 0 ]  as
102                                                ItemInfoResponseMessageType;
103  
104                           //  显示邮件正文
105                          Console.WriteLine( " 邮件格式:{0} " , getItemResponseMessage.Items.Items[ 0 ].Body.BodyType1);
106                          Console.WriteLine( string .Format( " 正文:{0} " , getItemResponseMessage.Items.Items[ 0 ].Body.Value));
107  
108                           //  获取当前邮件的附件集合
109                           if  (getItemResponseMessage.Items.Items[ 0 ].HasAttachments)
110                             {
111                              AttachmentType[] attachments  =  getItemResponseMessage.Items.Items[ 0 ].Attachments;
112  
113                               //  循环获取当前邮件的每一个附件
114                               for  ( int  i  =   0 ; i  <=  attachments.Length  -   1 ;i ++  )
115                                 {
116                                   //  定义GetAttachmentType,设置相应的属性,进行模式验证来获取附件
117                                  GetAttachmentType getAttachment  =   new  GetAttachmentType();
118                                  RequestAttachmentIdType[] attachmentIDArry  =   new  RequestAttachmentIdType[ 1 ];
119                                  attachmentIDArry[ 0 ]  =   new  RequestAttachmentIdType();
120                                  attachmentIDArry[ 0 ].Id  =  attachments.AttachmentId.Id;
121                                  getAttachment.AttachmentIds  =  attachmentIDArry;
122                                  getAttachment.AttachmentShape  =   new  AttachmentResponseShapeType();
123                                 
124                                   //  获取附件
125                                  GetAttachmentResponseType getAttachmentResponse  =  exchangeServer.GetAttachment(getAttachment);
126  
127                                   //  返回服务器的响应对象
128                                  AttachmentInfoResponseMessageType responseMessage  =  getAttachmentResponse.ResponseMessages.Items[ 0 ]  as  AttachmentInfoResponseMessageType;
129                                   if  (responseMessage  !=   null )
130                                     {
131                                       //  没有异常,显示附件信息
132                                       if  (responseMessage.ResponseClass  ==  ResponseClassType.Success  &&  responseMessage.Attachments  !=   null
133                                                              &&  responseMessage.Attachments.Length  >   0 )
134                                         {
135                                          AttachmentType attachment  =  responseMessage.Attachments[ 0 ];
136                                          Console.WriteLine( " 附件名:{0}\n " , attachment.Name);
137                                           // Console.WriteLine("附件类型:{0}\n", attachment.ContentId);                                                     
138                                      }
139                                  }
140                              }
141                          }
142  
143                           //  删除当前邮件
144                          DeleteItemType deleteItem  =   new  DeleteItemType();
145                          deleteItem.ItemIds  =   new  BaseItemIdType[ 1 ];
146  
147                           //  将要删除邮件的ID,changekey赋值给ItemIdType对象
148                          ItemIdType itemIDType  =   new  ItemIdType();
149                          itemIDType.Id  =  it.ItemId.Id;
150                          itemIDType.ChangeKey  =  it.ItemId.ChangeKey;
151  
152                          deleteItem.ItemIds[ 0 ]  =  itemIDType;
153  
154                           //  执行删除
155                          DeleteItemResponseType deleteResponse  =  exchangeServer.DeleteItem(deleteItem);
156  
157                           //  删除成功
158                           if  (deleteResponse.ResponseMessages.Items.Length  >   0   &&  deleteResponse.ResponseMessages.Items[ 0 ].ResponseClass  ==  ResponseClassType.Success)
159                             {
160                              Console.WriteLine( " 删除成功 " );
161                          }
162                          
163                      }
164                  }
165  
166              }
167          }
  本文来自CSDN博客,转载请标明出处:http://blog.iyunv.com/thy822/archive/2010/09/09/5873244.aspx
  
  
  
  
  
  
  
  
  
  
  
  第一次做webdav方法读取excahnge邮件方面的东西,将网上查找到的代码改成了.ascx控件,后台代码如下:
  

DSC0000.gif DSC0001.gif 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.Data;
using System.Xml;
namespace SharePoint.Exchange2003
{
    public class unreadmailcontrol : UserControl
    {
        GridView GridView1;
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                GridView1 = (GridView)this.FindControl("GridView1");
                GridView1.DataSource = GetUnReadMail();
                GridView1.DataBind();
            }
            catch (Exception ex)
            {
            }
        }
        private DataTable GetUnReadMail()
        {
            string url = "http://ip/exchange/"; //指定Exchange服务器地址
            System.Net.HttpWebRequest Request;
            System.Net.WebResponse Response;
            System.Net.CredentialCache MyCredentialCache;
            string strUserName = "administrator"; //指定登录的用户名
            string strRootURI = url + strUserName.Trim() + "/收件箱/"; //得到要访问邮箱的WebDAV地址
            string strPassword = "test"; //指定该用户的密码
            string strDomain = "test"; //指定域名
            string strQuery = "";
            byte[] bytes = null;
            System.IO.Stream RequestStream = null;
            System.IO.Stream ResponseStream = null;
            XmlDocument ResponseXmlDoc = null;
            XmlNodeList HrefNodes = null;
            XmlNodeList SizeNodes = null;
            int count = 0;
            try
            {
                // 用SQL查询WebDAV返回结果中的unreadcount节点.
                //strQuery = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >"
                // + "<D:sql>SELECT \"DAV:displayname\",\"urn:schemas:httpmail:subject\",\"urn:schemas:httpmail:unreadcount\" FROM \"" + strRootURI + "\""
                // + "</D:sql></D:searchrequest>";
                strQuery = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >"
                   + "<D:sql>SELECT \"urn:schemas:httpmail:importance\",\"urn:schemas:httpmail:from\",\"urn:schemas:httpmail:read\",\"urn:schemas:httpmail:datereceived\",\"urn:schemas:httpmail:subject\",\"urn:schemas:httpmail:hasattachment\","
                   + "\"DAV:contentclass\",\"DAV:getcontentlength\",\"DAV:displayname\""
                   + "FROM \"" + strRootURI + "\""
                   + "WHERE \"DAV:ishidden\" = false AND \"DAV:isfolder\" = false"
                   + "</D:sql></D:searchrequest>";

                // 创建新的CredentialCache对象,构建身份凭据
                MyCredentialCache = new System.Net.CredentialCache();
                MyCredentialCache.Add(new System.Uri(strRootURI),
                 "NTLM",
                 new System.Net.NetworkCredential(strUserName, strPassword, strDomain)
                 );
                // Create the HttpWebRequest object.
                Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI);
                // 指定HttpWebRequest的身份凭据,此处为关键所在。如果使用之前
                // 创建的MyCredentialCache,则这个身份凭据是可以从Web服务器传递
                // 到Exchange服务器的,但是这样带来的问题也很明显,就是不能够自
                // 动获取当前登录到域的用户的身份。即便已经成功登录到域,那也只
                // 能通过form再次输入用户名密码。因此,我在这里用的是
                // Request.Credentials = CredentialCache.DefaultCredentials,
                // 这样便可以获得当前用户的凭据,但是这样带来的问题便是上面提到的
                // 身份凭据无法传递的问题,解决方法请关注下篇文章。
                Request.Credentials = MyCredentialCache;
                // 指定WebDAV的SEARCH方法
                Request.Method = "SEARCH";
                // Encode the body using UTF-8.
                bytes = Encoding.UTF8.GetBytes((string)strQuery);
                // Set the content header length. This must be
                // done before writing data to the request stream.
                Request.ContentLength = bytes.Length;
                // Get a reference to the request stream.
                RequestStream = Request.GetRequestStream();
                // Write the SQL query to the request stream.
                RequestStream.Write(bytes, 0, bytes.Length);
                // Close the Stream object to release the connection
                // for further use.
                RequestStream.Close();
                // Set the content type header.
                Request.ContentType = "text/xml";
                // Send the SEARCH method request and get the
                // response from the server.
                Response = (HttpWebResponse)Request.GetResponse();
                // Get the XML response stream.
                ResponseStream = Response.GetResponseStream();
                // 创建XmlDocument对象,并获取收件箱的unreadcount节点的值
                ResponseXmlDoc = new XmlDocument();
                ResponseXmlDoc.Load(ResponseStream);
                //HrefNodes = ResponseXmlDoc.GetElementsByTagName("a:displayname");
                //SizeNodes = ResponseXmlDoc.GetElementsByTagName("d:unreadcount");
                //for (int i = 0; i < HrefNodes.Count; i++)
                //{
                //    if (HrefNodes.InnerText == "收件箱")
                //        count = int.Parse(SizeNodes.InnerText);
                //}
                //ResponseStream.Close();
                //Response.Close();
                XmlNodeList idNodes = ResponseXmlDoc.GetElementsByTagName("a:displayname");
                XmlNodeList SenderNodes = ResponseXmlDoc.GetElementsByTagName("d:from");
                XmlNodeList importanceNodes = ResponseXmlDoc.GetElementsByTagName("d:importance");
                XmlNodeList contextclassNodes = ResponseXmlDoc.GetElementsByTagName("a:contentclass");
                XmlNodeList readNodes = ResponseXmlDoc.GetElementsByTagName("d:read");
                XmlNodeList datareceiveNodes = ResponseXmlDoc.GetElementsByTagName("d:datereceived");
                XmlNodeList subjectNodes = ResponseXmlDoc.GetElementsByTagName("d:subject");
                XmlNodeList getcontentlengthNodes = ResponseXmlDoc.GetElementsByTagName("a:getcontentlength");
                XmlNodeList hasattachmentNodes = ResponseXmlDoc.GetElementsByTagName("d:hasattachment");
                XmlNodeList hrefNodes = ResponseXmlDoc.GetElementsByTagName("a:href");

                DataTable dt = new DataTable();
                dt.Columns.Add("Subject");
                dt.Columns.Add("Href");
                dt.Columns.Add("Time");
                dt.Columns["Time"].DataType = Type.GetType("System.DateTime");
                for (int j = 0; j < readNodes.Count; j++)
                {
                    //if (readNodes[j].InnerText == "1")continue;//只取未读邮件


                    dt.Rows.Add(subjectNodes[j].InnerText, hrefNodes[j].InnerText, DateTime.Parse(datareceiveNodes[j].InnerText));
                }
                ResponseStream.Close();
                Response.Close();

                return dt;
            }
            catch
            {
                return null;
            }
        }
    }
}  
  前台展示页面(.ascx)如下:
  

代码

<%@ Control Language="C#"  Inherits="SharePoint.Exchange2003.unreadmailcontrol, SharePoint.Exchange2003, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7da4c70ffa3a2438" %>
  <style type="text/css">
        img
        {
            border-style: none;
        }
        body
        {
            font-size: 12px;
        }
        .td
        {
        }
        a
        {
            text-decoration: none;
            color: #616161;
        }
        #header
        {
            width: 225px;
            height: 20px;
            background-repeat: no-repeat;
            background-image: url(/_layouts/images/header.png);
            padding-left: 180px;
            padding-top: 4px;
        }
        #header a
        {
            color: #B88A00;
        }
        #dataTable
        {
            height: 259px;
            width: 223px;
            border-style: solid;
            border-width: 1px;
            border-color: Gray;
        }
        #mainDiv
        {
            
        }
    </style>
   
  <div id="mainDiv">
        <div id="header">
            <a href="http://ip/exchange/" target="_blank">更多...</a></div>
        <div id="dataTable">
            <asp:GridView ID="GridView1" runat="server" ShowHeader="False" AutoGenerateColumns="False"
                Width="223px" RowStyle-Height="23px" RowStyle-CssClass="td" AllowPaging="True"
                BorderColor="#CCCCCC" BorderStyle="Groove">
                <PagerSettings Visible="False" />
                <RowStyle CssClass="td" Height="23px"></RowStyle>
                <Columns>
                    <asp:TemplateField ShowHeader="False">
                        <ItemTemplate>
                            <img alt="" src="/_layouts/images/email.jpg" />
                        </ItemTemplate>
                        
                    </asp:TemplateField>
                    <asp:TemplateField ShowHeader="False" ItemStyle-Height="23">
                        <ItemTemplate>
                            <div style="text-overflow: ellipsis; white-space: nowrap; overflow: hidden; width: 145px;
                                padding-left: 3px;">
                                <a id="LinkButton1" runat="server" href='<%# DataBinder.Eval(Container.DataItem, "Href") %> '
                                    target="_blank">
                                    <%# DataBinder.Eval(Container.DataItem, "Subject") %>
                                </a>
                            </div>
                        </ItemTemplate>
                        <ItemStyle Height="23px"></ItemStyle>
                    </asp:TemplateField>
                    <asp:BoundField DataField="Time" DataFormatString="{0:MM-dd}">
                        <ItemStyle Width="45px" ForeColor="Gray" Font-Names="Verdana" HorizontalAlign=" Center"
                            Font-Size="10px"></ItemStyle>
                    </asp:BoundField>
                </Columns>
            </asp:GridView>
        </div>
    </div>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-112089-1-1.html 上篇帖子: Exchange Server 2010 收发传真 下篇帖子: Exchange 2007 邮箱设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表