Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

时间:2022-07-21 14:34:37

  转载:http://www.cnblogs.com/zhongweiv/archive/2013/02/02/WindowsServer2008R2_Exchange2010_EWS.html
目录

 

 

配置环境

配置环境完全在此前一篇文章搭建好的环境下进行配置:

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)         

 

安装准备
  1. 安装DNS服务器
  2. 安装AD域服务
  3. 安装IIS
  4. 安装.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

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

步骤 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 安装语言”

 Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

步骤 4: 安装 Microsoft Exchange

          点击后出现复制窗口

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

复制完成,初始化好安装程序,会出现Exhcange Server 2010安装界面

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

选择"我接受许可协议中的条款",点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

点击“下一步按钮”

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

输入Exchange 组织名称,点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

勾选上"客户端访问角色将面向 Internet"  (如果只供内网访问,可以不勾选)

输入域名,点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

这一步随自已选择,然后点击“下一步”按钮,进入“准备情况检查”

 Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

出现3个警告和1个错误

 ①警告:组织先决条件

  Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

  解法方法:忽略

 ②警告:集线器传输角色 先决条件

  Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

  解决方法:按照提示去 http://go.microsoft.com/fwlink/?LinkID=123380 下载 FilterPackx64.exe ,并安装它.

 ③警告:邮箱角色 先决条件

  Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 ④错误:客户端访问 先决条件

  Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

  解决方法:开始菜单--->管理工具--->服务--->找到“Net.Tcp Port Sharing Service”--->启动类型设为“自动”,并且启用此服务

 

进行上面这些操作之后,重启服务器,再运行Exchange Server 2010安装程序!

 Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

点击“安装”按钮, 安装时间可能比较长.

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

点击完成.

配置连接器

 当Exchange Server 2010安装完成后,会自动弹出 Exchange 管理控制台

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

新建"发送连接器"

在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->组织配置--->集线器传输--->右键“新建发送连接器”

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

输入连接器名称,点击“下一步”按钮

 Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 选择“添加”菜单,点击“SMTP 地址空间”

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

在弹出框中输入如图,点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

刚添加的“SMTP 地址空间”就会出现在列表中,直接“下一步”

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

选择如图,点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

直接“下一步”

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

确认配置信息,点击“新建”

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

查看新建状态,点击“完成”

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

配置"接收连接器"

在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->服务器配置--->集线器传输--->接收连接器

--->双击Client Porschev--->配置如下图

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->服务器配置--->集线器传输--->接收连接器

--->双击Default Porschev--->配置如下图

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

配置远程域属性

http://technet.microsoft.com/zh-CN/library/bb124931(v=exchg.141).aspx

 在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->组织配置--->集线器传输--->选择“远程域”--->双击列表中的“Default”--->进行如下图配置

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

设置DNS

控制面板--->网络和 Internet--->网络和共享中心--->本地连接--->属性--->Internet 协议版本 4(TCP/IPv4属性)--->属性

--->高级--->DNS选择卡--->添加本地IP

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

新建邮箱,测试收发

 在左侧控制台树,中选择Microsoft Exchange--->Microsoft Exchange的内部部署--->收件人配置--->邮箱--->右键“新建邮箱”

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

选择“用户邮箱”,点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

选择“新建用户”,点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

输入必要信息,点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

输入别名,指定数据库

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

点击“下一步”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

点击“新建”按钮

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

“邮箱-整个林”中就可以看见新建的邮箱,为了测试,我建了两个邮箱

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

在AD域中查看,这两个用户也同样创建了域用户

 

测试收发

在局域网中的另外一台机器*问Exchange Web版:https://192.168.206.103/owa/

                      或者 https://mail.adserv.com/owa/   (在DNS管理中手动添加mail.adserv.com的解析

 

测试发送邮件

用创建的zw帐号登录,登录成功,表示Exchange安装配置没有什么问题

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

发送一封邮件给另一个测试帐号,发送成功!

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

用测试收邮件帐号登录,收件箱中有刚发的测试邮件!

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

至此,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

 通过浏览器访问:

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件 

输入用户名,密码登录

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

 新建一个Web Application项目,添加Web引用:https://192.168.206.103/ews/Services.asmx

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

发送邮件代码:

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件
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(), "", "<script>alert('发送成功')</script>");
}
else
{
Page.ClientScript.RegisterStartupScript(
this.GetType(), "", "<script>alert('发送失败')</script>");
}
}

#region## Send mail (Exchange)
/// <summary>
/// Function: Send mail (Exchange)
/// Created by: Wilson Zhong
/// Data: 2012-12-11
/// </summary>
/// <param name="credentialUserName">Credential user name [example: user1]</param>
/// <param name="credentialUserPwd">Credential user password [example: abcd]</param>
/// <param name="senderEmail">Sender email [example: user1@adserv.com]</param>
/// <param name="recipientEmail">Recipient email [example: user2@adserv.com]</param>
/// <param name="domainName">Domain name [example: adserv.com]</param>
/// <param name="ewsUrl">EWS URL [example: https://mail.adserv.com/ews/exchange.asmx]</param>
/// <param name="subjectName">Email subject</param>
/// <param name="bodyVal">Email body</param>
/// <returns></returns>
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
/// <summary>
/// Function: Set the certificate policy
/// Create by: Wilson Zhong
/// Data: 2012-12-11
/// </summary>
private static void SetCertificatePolicy()
{
ServicePointManager.ServerCertificateValidationCallback
+= RemoteCertificateValidate;
}

/// <summary>
/// Function: Remote certificate validation
/// Created by: Wilson Zhong
/// Data: 2012-12-11
/// </summary>
private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
{
return true;
}
#endregion
}
}
Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

测试程序发送邮件

 运行程序,输入必要项,测试发送.

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

登录Web版Exchange,查看是否收到邮件

Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件

 

至此,用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 身份验证”后,上述问题不会再出现!

 

 

作   者:   Porschev[钟慰]
出   处:   http://www.cnblogs.com/zhongweiv/
微   博:     http://weibo.com/porschev
欢迎任何形式的转载,但请务必注明原文详细链接