我正在尝试更新现有的约会,但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) 我正在尝试使用最新的Exchange Web服务DLL,但是当我搜索我的硬盘时,我看到许多版本的Microsoft.Exchange.WebServices.DLL,最新版本为14.0.650.7,日期为1/24/12 .
我想重建我的机器但找不到官方的地方来获取这个DLL.我试图下载最新的SDK我没有看到任何DLL使用,也没有任何CHM供我使用.
我在哪里可以获得最新版本的Microsoft.Exchange.WebServices.DLL?
所以我有这个非常基本的程序,试图发送电子邮件,但我一直在
信箱不可用.服务器响应为: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测试工具中?我在某处遗漏了某种身份验证选项吗?我有四重检查所有信息在两个地方都是正确和相同的,它在工具中工作,但在代码中不起作用.
我有以下代码,用于在加载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记录器,则该管理单元也会成功加载.
如果有人能提供任何可以帮我解决这个问题的建议,我会很高兴.
谢谢
我最近使用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
这是我的方案:我必须阅读来自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) 当我尝试通过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
我正在使用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) 我有以下代码:
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).
我被困在两个不同的方面......
items不要在上面的代码中返回任何内容.这TotalCount是零.也许我在api做错了.我无法想象这一点.
我实际上对我要查询的内容感到困惑.我不明白交易所在这件事上的决议.这将在下面进一步描述.
所以你在房间邮箱中发送电子邮件.每封电子邮件都嵌入了日历,通常带有一些base64编码.日历有一个特定的模式 - 我们只对您在VEVENTS之间找到的数据感兴趣(即BEGIN:VEVENT和END:VEVENT).这里的问题是有时会有多个VEVENTS.那么交换真的如何呢?它是否贯穿所有VEVENTS,符合标准; 如果它成功匹配,它是否返回"电子邮件"(附加/嵌入日历)?或者是其他一些机制?
因此,我不确定我在上面的代码中写的语义.所以请就此提出建议.
嗨,我想访问分配给我的邮箱的电子邮件,但它不是我的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)
我能做什么?