我是新手使用EWS(Exchange Web服务),我正在寻找一个简单的示例,演示如何发送带附件的电子邮件.我搜索了一个例子,我找不到任何简单明了的东西.我找到了有关如何发送电子邮件但未发送带附件的电子邮件的示例.
有没有人有他们推荐的例子的链接?在这里发布一个例子也可以正常工作!
我有一个同步应用程序与Exchange 2010同步约会,我有一些问题.
我们正在使用EWS托管API,它会在给定间隔后轮询MS Exchange以获取新邮件.每次调用轮询调用(PullSubscription.GetEvents()) - Microsofts API都无法正确处理NetworkStream并导致内存按比例增加.这在此之前已经讨论过,但从未解决过.使用ANTS Profiler,我们能够确定哪些对象在内存中不断增长并隔离问题.
既然问题已被隔离 - 有没有办法处理在我们没有引用的外部API中创建的NetworkStream?GC.Collect()似乎没有处置它,因为它仍然有一个活动的引用.我们可以做些什么来清理悬空参考?我们可以使用一些包装来强制清除他们的错误SDK吗?
处理EWS限制策略的有效方法是什么?
我正在尝试阅读邮箱中的每封电子邮件以及下载所有附件.我遇到的问题是Exchange经常会返回异常说The server cannot service this request right now. Try again later..似乎很明显,我必须达到我的极限.搜索我可以看到这个错误很可能是因为我每分钟花费多少时间来处理CAS.限制政策似乎是EWSPercentTimeInCAS.
由于每个查询只能收到1,000封电子邮件,因此我需要查询所有57,000封电子邮件.我怎样才能做到这一点?
请注意,我并没有试图规避限制政策.想到的唯一想法是Thread.Sleep(30000)每次检索1,000封电子邮件时发出声明(我的搜索结果限制).然而不理想应该工作,因为获取1,000个项目花费的时间要少得多.
此问题似乎源于下载附件.邮箱总共有7,000个附件.
我试图在Android应用程序中使用EWS Java API v1.1.5(http://archive.msdn.microsoft.com/ewsjavaapi),并遇到了许多问题.我下载了源代码,并按照提供的说明在Eclipse中编译EWS Java API.在这些说明中,您被告知要下载并添加以下pre-requiste jar文件依赖项:
我这样做了,并按照构建说明生成了以下jar文件:
接下来,我构建了一个全新的Android应用程序,为清单添加了适当的权限,然后将以下源添加到主要活动的OnCreate:
ExchangeService service = new ExchangeService();
ExchangeCredentials credentials = new WebCredentials("emailaddress", "password");
service.setCredentials(credentials);
try
{
service.autodiscoverUrl("emailaddress", this);
}
catch (Exception e)
{
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我首先尝试使用EWSAPI-1.1.0.jar文件作为依赖项运行此应用程序.当我这样做时,我得到了以下致命错误:
未捕获的处理程序:由于未捕获的异常而导致主要退出java.lang.NoClassDefFoundError:org.apache.commons.httpclient.MultiThreadedHttpConnectionManager at microsoft.exchange.webservices.data.ExchangeServiceBase.(Unknown Source)at microsoft.exchange.webservices.data.ExchangeServiceBase .(unknown Source)at microsoft.exchange.webservices.data.ExchangeService.(Unknown Source)at com.meshin.exchange.ExchangeDiscoveryActivity.onCreate(ExchangeDiscoveryActivity.java:40)
根据我的研究,似乎正在生成此错误,因为Android附带Apache HttpClient 4.0,它似乎不再具有MultiThreadedHttpConnectionManager类.
如果我改为删除EWSAPI-1.1.0.jar,而是使用EWSAPIWithJARS-1.1.0.jar文件作为依赖项,则会收到以下错误:
VFY:无法解析静态方法908:Ljavax/xml/stream/XMLOutputFactory; 的newInstance()Ljavax/XML /流/ XMLOutputFactory; VFY:L microsoft/exchange/webservices/data/EwsUtilities中的死代码0x0008-006a; .formatLogMessage(Ljava/lang/String; Ljava/lang/String;)Ljava/lang/String; VFY:无法找到签名中引用的类(Ljavax/xml/stream/XMLStreamWriter;)
最后......
致命异常:主要java.lang.VerifyError:microsoft.exchange.webservices.data.ExchangeService.getAutodiscoverUrl(未知来源)的microsoft.exchange.webservices.data.AutodiscoverService at microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl(Unknown Source )在com.meshin.exchange.ExchangeDiscoveryActivity.onCreate(ExchangeDiscoveryActivity.java:41)
我假设因为现在我包含了HttpClient 3.1 jar,它与Android库中包含的HttpClient 4.0 jar冲突.
我的问题是,如果我有一种方法可以在Android项目中使用EWS Java API,而无需重新编写引用HttpClient 3.1特定事物的部分,而这些部分不再是4.0.
android exchangewebservices apache-commons-httpclient ewsjavaapi
所以我用给定的ICalUid创建Exchange(2007)约会:
var app = new Appointment(svc);
app.ICalUid = id;
app.Subject = "Test Appointment";
app.Recurrence = new Recurrence.DailyPattern(DateTime.Now, 3);
app.RequiredAttendees.Add("mstum@example.com");
app.AllowNewTimeProposal = false;
app.Body = new MessageBody(BodyType.HTML, "This is a <b>Test!</b>");
app.Save();
Run Code Online (Sandbox Code Playgroud)
稍后,我想更新该约会,此时我需要通过ICalUid找到它.
但是,似乎没有办法做到这一点?我只能使用Appointment.BindExchange ID,这是我在更新时没有的(存储它非常不切实际)
我可以使用相同的ICalUid创建一个新的约会,它看起来像一个更新,但再次要求接受/拒绝,而不是只显示"无需更新".
有没有正确的方法呢?
.net exchange-server exchange-server-2007 exchangewebservices
我正在使用Exchange Web服务连接到邮箱并查找符合特定条件的邮件,使用FindItems和SearchFilter.
我可以通过过滤"来自"电子邮件地址的邮箱收到电子邮件,如下所示:
var service = new ExchangeService(ExchangeVersion.Exchange2010_SP1)
{
TraceEnabled = true,
Credentials = new WebCredentials(username, password)
};
var filter = new SearchFilter.ContainsSubstring(EmailMessageSchema.From, "some@email.com");
service.FindItems(WellKnownFolderName.Inbox, filter, new ItemView(50))
Run Code Online (Sandbox Code Playgroud)
我可以过滤这样的DisplayTo属性:
var filter = new SearchFilter.ContainsSubstring(EmailMessageSchema.DisplayTo, "display name");
Run Code Online (Sandbox Code Playgroud)
但据我所知,只搜索收件人的显示名称.我想搜索电子邮件地址或域名.
当我期望它时,这不会返回结果:
var filter = new SearchFilter.ContainsSubstring(EmailMessageSchema.ToRecipients, "some@email.com");
Run Code Online (Sandbox Code Playgroud)
是否可以找到收件人列表中包含指定电子邮件地址的所有电子邮件?
我尝试创建约会时收到错误:
预期的XML节点类型是XmlDeclaration,但实际类型是Element.
我打电话时会发生此异常AutodiscoverUrl.
我创建了一个Web服务来执行此操作.
[webMethod]
CreateAppointment()
{
var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1)
{
Credentials = new WebCredentials("myAcount@gmail.com", "mypassowrd")
};
service.AutodiscoverUrl("myAcount@gmail.com");
//----------------------------------------------------------------------
var app = new Appointment(service)
{
Subject = "Meet George",
Body = "You need to meet George",
Location = "1st Floor Boardroom",
Start = DateTime.Now.AddHours(2),
End = DateTime.Now.AddHours(3),
IsReminderSet = true,
ReminderMinutesBeforeStart = 15
};
app.RequiredAttendees.Add(new Attendee("any@gmail.com"));
app.Save(SendInvitationsMode.SendToAllAndSaveCopy);
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
private void ListCalendarFolders(ref List<EBCalendar> items, int offset)
{
var pageSize = 100;
var view = new FolderView(pageSize, offset, OffsetBasePoint.Beginning);
view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
view.PropertySet.Add(FolderSchema.DisplayName);
view.PropertySet.Add(FolderSchema.EffectiveRights);
view.Traversal = FolderTraversal.Deep;
FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.MsgFolderRoot, view);
foreach (Folder myFolder in findFolderResults.Folders)
{
if (myFolder is CalendarFolder)
{
var folder = myFolder as CalendarFolder;
items.Add(EBCalendar.FromEWSFolder(folder));
}
}
if (findFolderResults.MoreAvailable)
{
offset = offset + pageSize;
ListCalendarFolders(ref items, offset);
}
}
Run Code Online (Sandbox Code Playgroud)
哪里service是一个ExchangeService实例.不幸的是,它仍然列出了已删除的文件夹,并且没有列出共享日历.
如何让它列出所有共享日历,如何让它不包括已删除的文件夹?
我一直在使用 Microsoft Graph API 访问 Exchange Online (Office365) 就地存档。
它基本上是一个经过身份验证的 GET HTTPS 请求https://graph.microsoft.com/v1.0/users/user@company.onmicrosoft.com/mailFolders/ArchiveMsgFolderRoot,它曾经可以正常工作。
从本周(2020 年 4 月下旬)开始,针对相同资源(无变化)的相同请求开始失败,原因如下:
404响应: {'error': {'code': 'ErrorInvalidMailboxItemId', 'message': "Item Id doesn't belong to the current mailbox.", 'innerError': {'request-id': '4a339242-9821-42a9-9622-4b1f7cd2c162', 'date': '2020-04-24T10:01:35'}}}
其他邮箱(不是ArchiveMsgFolderRoot)继续正常工作,没有问题。只有就地存档会受到影响。
您现在如何从 Graph API 访问 In-places Archives?你能分享一个例子吗?