目录 |
- 配置环境
- 安装准备
- 安装Exchange Server 2010
- 准备情况检查中的3个警告和1个错误
- 配置连接器
- 新建发送连接器
- 配置接收连接器
- 配置远程域属性
- 设置DNS
- 新建邮箱
- 测试收发
- 编写C#程序用EWS(Exchange WebService)发送邮件
- 示例下载
- 测试程序发送邮件
- 故障排除
配置环境 |
配置环境完全在此前一篇文章搭建好的环境下进行配置:
http://www.cnblogs.com/zhongweiv/archive/2013/01/04/win2008_addomain_configuration.html
Windows版本:Windows Server 2008 R2 Enterprise
Service Pack 1
系统类型: 64 位操作系统
所在域: adserv.com
Exchange版本:Exchange Server 2010 (x64) - DVD (Chinese-Simplified, Chinese-Traditional, English, French, German, Italian, Japanese, Korean, Portuguese-Brazil, Russian, and Spanish)
安装准备 |
- 安装DNS服务器
- 安装AD域服务
- 安装IIS
- 安装.NetFramework 3.5 SP1
安装准备第1、2、3步都在此前的文章中有详细的安装步骤和配置方法:
http://www.cnblogs.com/zhongweiv/archive/2013/01/04/win2008_addomain_configuration.html
http://www.cnblogs.com/zhongweiv/archive/2013/01/07/https.html
安装准备第4步 .NetFramework 3.5 SP1 不是必须的,Exchange Server 2010安装时会做检查,可以在安装Exchange Server 2010时同步安装.
安装Exchange Server 2010 |
我这里是ISO文件,我在直用虚机中的光驱加载,并点击运行 Setup.EXE
步骤 1、2都是灰色的,我提前安装了.Net Framework 3.5 SP1,Windows Server 2008 R2自带安装了Windows PowerShell V2
单独下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=25150
http://support.microsoft.com/kb/968929/zh-cn
步骤 3: 选择 Exchange 语言选项
点击“仅从 DVD 安装语言”
步骤 4: 安装 Microsoft Exchange
点击后出现复制窗口
复制完成,初始化好安装程序,会出现Exhcange Server 2010安装界面
点击“下一步”按钮
选择"我接受许可协议中的条款",点击“下一步”按钮
点击“下一步”按钮
点击“下一步按钮”
输入Exchange 组织名称,点击“下一步”按钮
勾选上"客户端访问角色将面向 Internet" (如果只供内网访问,可以不勾选)
输入域名,点击“下一步”按钮
这一步随自已选择,然后点击“下一步”按钮,进入“准备情况检查”
出现3个警告和1个错误
①警告:组织先决条件
解法方法:忽略
②警告:集线器传输角色 先决条件
解决方法:按照提示去 http://go.microsoft.com/fwlink/?LinkID=123380 下载 FilterPackx64.exe ,并安装它.
③警告:邮箱角色 先决条件
④错误:客户端访问 先决条件
解决方法:开始菜单--->管理工具--->服务--->找到“Net.Tcp Port Sharing Service”--->启动类型设为“自动”,并且启用此服务
进行上面这些操作之后,重启服务器,再运行Exchange Server 2010安装程序!
点击“安装”按钮, 安装时间可能比较长.
点击完成.
配置连接器 |
当Exchange Server 2010安装完成后,会自动弹出 Exchange 管理控制台
新建"发送连接器"
在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->组织配置--->集线器传输--->右键“新建发送连接器”
输入连接器名称,点击“下一步”按钮
选择“添加”菜单,点击“SMTP 地址空间”
在弹出框中输入如图,点击“下一步”按钮
刚添加的“SMTP 地址空间”就会出现在列表中,直接“下一步”
选择如图,点击“下一步”按钮
直接“下一步”
确认配置信息,点击“新建”
查看新建状态,点击“完成”
配置"接收连接器"
在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->服务器配置--->集线器传输--->接收连接器
--->双击Client Porschev--->配置如下图
在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->服务器配置--->集线器传输--->接收连接器
--->双击Default Porschev--->配置如下图
配置远程域属性
http://technet.microsoft.com/zh-CN/library/bb124931(v=exchg.141).aspx
在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->组织配置--->集线器传输--->选择“远程域”--->双击列表中的“Default”--->进行如下图配置
设置DNS
控制面板--->网络和 Internet--->网络和共享中心--->本地连接--->属性--->Internet 协议版本 4(TCP/IPv4属性)--->属性
--->高级--->DNS选择卡--->添加本地IP
新建邮箱,测试收发 |
在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->收件人配置--->邮箱--->右键“新建邮箱”
选择“用户邮箱”,点击“下一步”按钮
选择“新建用户”,点击“下一步”按钮
输入必要信息,点击“下一步”按钮
输入别名,指定数据库
点击“下一步”按钮
点击“新建”按钮
“邮箱-整个林”中就可以看见新建的邮箱,为了测试,我建了两个邮箱
在AD域中查看,这两个用户也同样创建了域用户
测试收发 |
在局域网中的另外一台机器上访问Exchange Web版:https://192.168.206.103/owa/
或者 https://mail.adserv.com/owa/ (在DNS管理中手动添加mail.adserv.com的解析)
测试发送邮件
用创建的zw帐号登录,登录成功,表示Exchange安装配置没有什么问题
发送一封邮件给另一个测试帐号,发送成功!
用测试收邮件帐号登录,收件箱中有刚发的测试邮件!
至此,Exchange Server 2010环境搭建和收发邮件的配置就已完成!
参考资料:
http://technet.microsoft.com/zh-cn/library/bb124558(v=exchg.141).aspx
http://wenku.baidu.com/view/720dc0114431b90d6c85c71d.html
编写C#程序用EWS(Exchange WebService)发送邮件 |
EWS的地址:https://mail.adserv.com/ews/Services.asmx
或者:https://mail.adserv.com/ews/exchange.asmx
通过浏览器访问:
输入用户名,密码登录
新建一个Web Application项目,添加Web引用:https://192.168.206.103/ews/Services.asmx
发送邮件代码:
using System; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using ExchangeEWS.com.adserv.mail; namespace ExchangeEWS { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnSend_Click(object sender, EventArgs e) { bool resultVal = SendMailExchange(txtSendAccount.Text.Trim(), txtSendPwd.Text.Trim(), txtSendEmail.Text.Trim(), txtRecEmail.Text.Trim(), txtDomain.Text.Trim(), txtEws.Text.Trim(), "测试邮件主题", "测试EWS发送邮件正文"); if (resultVal) { Page.ClientScript.RegisterStartupScript(this.GetType(), "", ""); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "", ""); } } #region## Send mail (Exchange) ////// Function: Send mail (Exchange) /// Created by: Wilson Zhong /// Data: 2012-12-11 /// /// Credential user name [example: user1] /// Credential user password [example: abcd] /// Sender email [example: [email protected]] /// Recipient email [example: [email protected]] /// Domain name [example: adserv.com] /// EWS URL [example: https://mail.adserv.com/ews/exchange.asmx] /// Email subject /// Email body /// public static bool SendMailExchange(string credentialUserName, string credentialUserPwd, string senderEmail, string recipientEmail, string domainName, string ewsUrl, string subjectName, string bodyVal) { SetCertificatePolicy(); ExchangeServiceBinding esb = new ExchangeServiceBinding(); esb.Credentials = new NetworkCredential(credentialUserName, credentialUserPwd, domainName); esb.Url = ewsUrl; CreateItemType createItemRequest = new CreateItemType(); // Specifiy how the created items are handled createItemRequest.MessageDisposition = MessageDispositionType.SendAndSaveCopy; createItemRequest.MessageDispositionSpecified = true; // Specify the location of sent items. createItemRequest.SavedItemFolderId = new TargetFolderIdType(); DistinguishedFolderIdType sentitems = new DistinguishedFolderIdType(); sentitems.Id = DistinguishedFolderIdNameType.sentitems; createItemRequest.SavedItemFolderId.Item = sentitems; // Create the array of items. createItemRequest.Items = new NonEmptyArrayOfAllItemsType(); // Create a single e-mail message. MessageType message = new MessageType(); message.Subject = subjectName; message.Body = new BodyType(); message.Body.BodyType1 = BodyTypeType.HTML; message.Body.Value = bodyVal; message.ItemClass = "IPM.Note"; message.Sender = new SingleRecipientType(); message.Sender.Item = new EmailAddressType(); message.Sender.Item.EmailAddress = senderEmail; message.ToRecipients = new EmailAddressType[1]; message.ToRecipients[0] = new EmailAddressType(); message.ToRecipients[0].EmailAddress = recipientEmail; message.Sensitivity = SensitivityChoicesType.Normal; // Add the message to the array of items to be created. createItemRequest.Items.Items = new ItemType[1]; createItemRequest.Items.Items[0] = message; try { // Send the request to create and send the e-mail item, and get the response. CreateItemResponseType createItemResponse = esb.CreateItem(createItemRequest); // Determine whether the request was a success. if (createItemResponse.ResponseMessages.Items[0].ResponseClass == ResponseClassType.Error) { //throw new Exception(createItemResponse.ResponseMessages.Items[0].MessageText); return false; } else { return true; } } catch (Exception ex) { Console.WriteLine(ex.Message); return false; } } #endregion #region## Certificate /// /// Function: Set the certificate policy /// Create by: Wilson Zhong /// Data: 2012-12-11 /// private static void SetCertificatePolicy() { ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate; } /// /// Function: Remote certificate validation /// Created by: Wilson Zhong /// Data: 2012-12-11 /// private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { return true; } #endregion } }
测试程序发送邮件 |
运行程序,输入必要项,测试发送.
登录Web版Exchange,查看是否收到邮件
至此,用EWS发送邮件也成功!
Demo下载:http://files.cnblogs.com/zhongweiv/ExchangeEWS.zip
EWS的功能很明显不会只有发邮件,更多EWS相关资料:
http://msdn.microsoft.com/en-us/library/exchangewebservices(v=exchg.140).aspx
http://msdn.microsoft.com/zh-cn/library/exchange/dd877030(v=exchg.140).aspx
故障排除 |
问题描述:在最初安装配置完成后,能正常访问Exchange的Web页面,但是输入用户名和密码怎么也登录不成功,一直提示用户名密码不正确
问题解决:反复确认用户名和密码确实没有输入错误后,发现IIS中“安全性”下都没有安装,装上“基本身份验证”和“Windows 身份验证”后,上述问题不会再出现!