标签: exchange-server-2010

EWS:更新约会的RequiredAttendees时,设置操作对于属性无效

我正在尝试更新现有的约会,但EWS正在投掷"Set action is invalid for property.".我查看了设置为约会对象的所有值,但我无法确定此错误的实际原因.

这是我的代码片段:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
service.Credentials = new WebCredentials("ews_calendar", PASSWORD, "acme");
service.Url = new Uri("https://acme.com/EWS/Exchange.asmx");
ImpersonatedUserId impUser = new ImpersonatedUserId();
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "tin.tin@acme.com");

string itemId = "";
DateTime PreviousStartDate = new DateTime(2012, 04, 02, 18, 00, 00);
DateTime PreviousEndDate = new DateTime(2012, 04, 02, 18, 30, 00);
CalendarView calView = new CalendarView(PreviousStartDate, PreviousEndDate);
Appointment appointment = new Appointment(service);
try
{
    calView.PropertySet = new PropertySet(BasePropertySet.IdOnly, AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.IsRecurring, AppointmentSchema.AppointmentType);
    FindItemsResults<Appointment> …
Run Code Online (Sandbox Code Playgroud)

exchangewebservices exchange-server-2010

20
推荐指数
1
解决办法
6486
查看次数

我在哪里可以获得最新的Microsoft.Exchange.WebServices.DLL?

我正在尝试使用最新的Exchange Web服务DLL,但是当我搜索我的硬盘时,我看到许多版本的Microsoft.Exchange.WebServices.DLL,最新版本为14.0.650.7,日期为1/24/12 .

我想重建我的机器但找不到官方的地方来获取这个DLL.我试图下载最新的SDK我没有看到任何DLL使用,也没有任何CHM供我使用.

我在哪里可以获得最新版本的Microsoft.Exchange.WebServices.DLL?

exchange-server exchangewebservices exchange-server-2010

14
推荐指数
2
解决办法
4万
查看次数

从代码发送电子邮件时,"5.7.1客户端没有权限"错误

所以我有这个非常基本的程序,试图发送电子邮件,但我一直在

信箱不可用.服务器响应为:5.7.1客户端无权作为此发件人发送

这是我的计划

static void Main(string[] args)
{
    SmtpClient client = new SmtpClient("Server", 25);
    client.UseDefaultCredentials = false;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.Credentials = new NetworkCredential("UserName", "Password");
    client.Send(new MailMessage("kevin@hopethisworks.com","Recipient"));
}
Run Code Online (Sandbox Code Playgroud)

我知道凭据有效,如果我使用相同的数据运行SMTP Test Tool 3.0一切都很好.

在此输入图像描述

以下是在Exchange服务器上为我的IP设置的接收连接器的一些屏幕截图

在此输入图像描述

在此输入图像描述

任何人都有任何想法会在我的代码中导致此错误,但不是在简单的SMTP测试工具中?我在某处遗漏了某种身份验证选项吗?我有四重检查所有信息在两个地方都是正确和相同的,它在工具中工作,但在代码中不起作用.

c# email exchange-server exchange-server-2010

12
推荐指数
1
解决办法
6万
查看次数

无法加载Exchange PowerShell管理单元:"Microsoft.Exchange.Data.Directory.Globals"的类型初始值设定项引发异常

我有以下代码,用于在加载Exchange 2010快照时创建PowerShell运行空间.

Dim runspaceConfig = RunspaceConfiguration.Create()

Dim snapInException As PSSnapInException = Nothing
runspaceConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", snapInException)

Dim runspace = RunspaceFactory.CreateRunspace(runspaceConfig)
runspace.Open()
Run Code Online (Sandbox Code Playgroud)

自安装Visual Studio 2012后,我在执行将管理单元添加到runspace配置的行时开始出现以下错误.

System.Management.Automation.Runspaces.PSSnapInException occurred
  HResult=-2146233087
  Message=Cannot load Windows PowerShell snap-in Microsoft.Exchange.Management.PowerShell.E2010 because of the following error: The type initializer for 'Microsoft.Exchange.Data.Directory.Globals' threw an exception.
  Source=System.Management.Automation
  WasThrownFromThrowStatement=False
  StackTrace:
       at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadCustomPSSnapIn(PSSnapInInfo mshsnapinInfo)
       at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadPSSnapIn(PSSnapInInfo mshsnapinInfo)
       at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadPSSnapIn(PSSnapInInfo mshsnapinInfo, PSSnapInException& warning)
       at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.DoAddPSSnapIn(String name, PSSnapInException& warning)
       at System.Management.Automation.Runspaces.RunspaceConfiguration.AddPSSnapIn(String name, PSSnapInException& warning)
Run Code Online (Sandbox Code Playgroud)

我已经能够确认nlog在某种程度上导致了这个问题.在创建powershell运行空间之前创建nlog记录器的组合会导致错误.

如果我从我的应用程序配置中删除nlog配置部分并只创建一个空的nlog记录器,则加载管理单元时没有错误.此外,如果我将nlog配置保留在我的应用程序配置中但不创建nlog记录器,则该管理单元也会成功加载.

  • 我尝试在x64和x86中构建项目.
  • 我已经重新安装了交换管理工具.
  • 我已尝试在交换环境中的另一台机器上进行测试.

如果有人能提供任何可以帮我解决这个问题的建议,我会很高兴.

谢谢

.net powershell exchange-server nlog exchange-server-2010

12
推荐指数
1
解决办法
1万
查看次数

无法访问公用文件夹root

我最近使用C#编写了一个.NET Console应用程序.其目的是读取特定文件夹中的电子邮件,解析它们以获取特定值并将其保存到数据库中.

我最初编写此代码时的电子邮件系统是Exchange 2003.但是,我知道我们很快就会升级到Exchange 2010:ergo,我构建了代码以在两种环境中工作.

但是,在迁移到Exchange 2010之后,应用程序已经崩溃.

该应用程序使用EWS API for 2010功能.当它尝试使用ExchangeService的FindFolders方法来查找publicfoldersroot时,它会抛出异常.这是代码:

ExchangeService service = new ExchangeService();
FindFoldersResults findRootFldrs;

service.UseDefaultCredentials = true;
service.AutodiscoverUrl("xxxxx@xxxx.xxx", delegate(string x) {
return true; });

FolderView fview = new FolderView(100);
fview.Traversal = FolderTraversal.Deep;

findRootFldrs = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, 
fview);
Run Code Online (Sandbox Code Playgroud)

例外:ErrorInvalidSchemaVersionForMailboxVersion,又名:

请求的邮箱不支持指定的RequestServerVersion

我试过了:

  • 将exchangeservice设置为2007(抛出异常:"发生内部服务器错误.操作失败.")

  • 给自己最高级别的公共文件夹权限(没有效果)

  • 手动设置我的凭据(无效)

我可以在Outlook 2007中查看公用文件夹; intellisense中提供了publicfoldersroot属性; 代码适用于本地文件夹(我可以解析我的收件箱).

我目前的想法是,它是最近设置Exchange 2010的一个设置:遗憾的是,这不是我的领域.例外情况告诉我它正在尝试使用以前版本的Exchange.将其设置为2007只会导致代码失败并出现内部服务器错误.

.net c# exchangewebservices ews-managed-api exchange-server-2010

9
推荐指数
1
解决办法
6177
查看次数

使用交换Web服务阅读电子邮件

这是我的方案:我必须阅读来自Exchange 2010 sp2帐户的电子邮件.我必须使用Exchange Web服务,POP3和IMAP被阻止.我必须在人们只能通过Intranet中的Web浏览器访问其帐户的环境中测试我的应用程序.我无法直接将此应用程序调试到此Intranet.我有这个代码片段来访问帐户:

private void Dowork()
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);

    string dominio = "domain";
    string usuario = "user";
    string password = "password";

    service.Credentials = new NetworkCredential(usuario, password, dominio);

    string url = usuario + "@" + dominio + ".com";

    service.AutodiscoverUrl(url, RedirectionUrlValidationCallback);
    //service.AutodiscoverUrl(url);

    FindItemsResults<Item> findResults = service.FindItems(
       WellKnownFolderName.Inbox,
       new ItemView(10));

    string content = string.Empty;

    foreach (Item item in findResults.Items)
    {
        EmailMessage email = EmailMessage.Bind(service, item.Id);
        email.Load();

        content += item.Subject + "\n";
        content += email.From.Address + "\n";
        content += email.Body …
Run Code Online (Sandbox Code Playgroud)

email exchangewebservices exchange-server-2010

8
推荐指数
1
解决办法
2万
查看次数

如何从Exchange Web服务(2010 SP1)发送HTML(多部分/替代)

当我尝试通过EWS发送带有内嵌图像(附件)的HTML消息时,这个问题就暴露出来了.但是我退回到最简单的形式,发现我甚至无法发送HTML消息.

我使用的是C#,.NET 4,EWS API 1.1,Exchange Server 2010 SP1.

这是我的代码的核心:

ExchangeConnection = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ExchangeConnection.Credentials = new WebCredentials(Username, Password, Domain);
ExchangeConnection.Url = new Uri(ServiceURI);

string MailBody = @"<html><head></head><body>
    This is a <b>test</b> <strong>HTML</strong> <em>message</em>.<br><br>
    Did it work?</body></html>";

NewMessage = new EmailMessage(ExchangeConnection);
NewMessage.Subject = "Test HTML Message #001";
NewMessage.Body = MailBody;
NewMessage.Body.BodyType = BodyType.HTML;
NewMessage.ToRecipients.Add("tony@zierniemann.com");
NewMessage.Send();
Run Code Online (Sandbox Code Playgroud)

使用该代码,我收到一条消息,内容如下:

Subject: Test HTML Message #001
Thread-Topic: Test HTML Message #001
Thread-Index: Acuy3U6nqQTa4W4ZQu6ueHPb2nPDPg==
Date: Thu, 13 Jan 2011 04:49:48 +0000
Message-ID: <2FDB41070D0AC24DB5BC8B80751063630B74A5@xxxxx.com>
Accept-Language: en-US
Content-Language: en-US …
Run Code Online (Sandbox Code Playgroud)

exchange-server exchangewebservices ews-managed-api exchange-server-2010

7
推荐指数
1
解决办法
2万
查看次数

使用Exchange Web Service 2010查找所有未读电子邮件,然后标记为已读?

我正在使用Exchang Web Services 2010尝试从邮箱中读取所有未读电子邮件,然后将其标记为已读.

我基于这个例子:

http://msdn.microsoft.com/en-us/library/exchange/aa563373(v=exchg.140).aspx

并想出了这个来查找所有未读的电子邮件,并阅读正文内容:

        //Set up the connection to exchange service
        ExchangeServiceBinding exchangeService = new ExchangeServiceBinding();
        exchangeService.Credentials = new NetworkCredential("userid", "password", "domain");
        exchangeService.Url = "https://exchangeserver/ews/exchange.asmx";

        //REturn all properties
        FindItemType findType = new FindItemType();
        findType.Traversal = ItemQueryTraversalType.Shallow;
        findType.ItemShape = new ItemResponseShapeType();
        findType.ItemShape.BaseShape = DefaultShapeNamesType.AllProperties;

        //Only search the inbox
        DistinguishedFolderIdType[] foldersToSearch = new DistinguishedFolderIdType[1];
        foldersToSearch[0] = new DistinguishedFolderIdType();
        foldersToSearch[0].Id = DistinguishedFolderIdNameType.inbox;
        findType.ParentFolderIds = foldersToSearch;

        //Only unread emails
        RestrictionType restriction = new RestrictionType();
        IsEqualToType isEqualTo = new IsEqualToType();
        PathToUnindexedFieldType pathToFieldType …
Run Code Online (Sandbox Code Playgroud)

c# soap exchangewebservices exchange-server-2010

7
推荐指数
2
解决办法
2万
查看次数

通过ews托管api查询日历项目的正确方法?

我有以下代码:

var startProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Meeting, "DTSTART", MapiPropertyType.String);
var endProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Meeting, "DTEND", MapiPropertyType.String);

var cond1 = new SearchFilter.IsEqualTo(startProp, StartDate);
var cond2 = new SearchFilter.IsEqualTo(endProp, EndDate);
var filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, cond1, cond2);
var items = svc.FindItems(WellKnownFolderName.Calendar, filter, view);
Run Code Online (Sandbox Code Playgroud)

我试图在交换室邮箱上运行此查询.(然而,这在上面的代码中并不明显).它可能具有确切的开始/结束时间的预留.因此,如果有一个预订符合该标准,我应该至少获得一个项目.

背景是:想到会议室,人们试图阻止会议.在交换时,这只是另一个邮箱,类似于用户邮箱.因此,在成功预订时,此邮箱会收到一封包含日历详细信息的电子邮件(iCalendar格式(*.ics).

我被困在两个不同的方面......

  1. items不要在上面的代码中返回任何内容.这TotalCount是零.也许我在api做错了.我无法想象这一点.

  2. 我实际上对我要查询的内容感到困惑.我不明白交易所在这件事上的决议.这将在下面进一步描述.

所以你在房间邮箱中发送电子邮件.每封电子邮件都嵌入了日历,通常带有一些base64编码.日历有一个特定的模式 - 我们只对您在VEVENTS之间找到的数据感兴趣(即BEGIN:VEVENT和END:VEVENT).这里的问题是有时会有多个VEVENTS.那么交换真的如何呢?它是否贯穿所有VEVENTS,符合标准; 如果它成功匹配,它是否返回"电子邮件"(附加/嵌入日历)?或者是其他一些机制?

因此,我不确定我在上面的代码中写的语义.所以请就此提出建议.

email calendar ews-managed-api exchange-server-2010

7
推荐指数
1
解决办法
178
查看次数

如何从没有默认邮箱的用户(我没有默认邮箱)的Exchange Server获取邮箱电子邮件详细信息?

嗨,我想访问分配给我的邮箱的电子邮件,但它不是我的Exchange Server中的主邮箱.

我能够获得分配给我的邮箱服务器的详细信息,但我有一个没有邮箱的用户.

我想知道如何访问它.

我读了一些与假冒或委托相关的内容.

这不起作用,因为新用户没有主邮件.

  • 如何获取分配给用户的邮箱数量?
  • 如何为用户获取特定的邮箱电子邮件?

我能够访问我的邮箱,但是当我尝试访问没有主邮箱的用户的邮箱时,我无法访问.

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
        service.Credentials = new WebCredentials("user-name", "password", "domain");
        //Autodiscover end point
        service.Url = new System.Uri("https://exchange-url/EWS/Exchange.asmx");
        FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, "maibox-name");
        ItemView itemView = new ItemView(1000);
        service.FindItems(SharedMailbox, itemView);
Run Code Online (Sandbox Code Playgroud)

我能做什么?

c# exchange-server exchangewebservices exchange-server-2010

7
推荐指数
1
解决办法
321
查看次数