我试图在OS X上使用Mono调用EWS(Exchange版本2007 SP1).我可以连接到服务并进行身份验证,但我尝试进行的任何调用都会导致异常,如下所示:
抛出了Microsoft.Exchange.WebServices.Data.ServiceResponseException "找不到具有指定ID的时区."
我已经尝试过指定几个不同的ID,并且都会产生相同的响应.我开始怀疑TZI ID本身在平台之间是否有所不同.如果是这样,有谁知道如何解决这些差异?
我是Scala和Play框架的新手.我必须创建一个"CONTACTS"模块,但是我收到以下错误:
type mismatch found : Unit required: play.api.mvc.Result
contactVal.save()
where contactVal is defined as
val contactVal = new Contact(service) where service is
val service = new ExchangeService()
Run Code Online (Sandbox Code Playgroud)
如何保存新的EWS联系人?
我的代码:
def add = Action(parse.json) {
implicit r=>
val contactVal = new Contact(service)
val userId = (r.body \ "userId").asOpt[String].getOrElse("")
val contactId = (r.body \ "id").asOpt[String].getOrElse("")
val givenName = (r.body \ "givenName").asOpt[String].getOrElse("")
val fName = (r.body \ "fName").asOpt[String].getOrElse("")
val lName = (r.body \ "lName").asOpt[String].getOrElse("")
val displayName = (r.body \ "displayName").asOpt[String].getOrElse("")
val emailId1 = …Run Code Online (Sandbox Code Playgroud) 我正在为交换服务器开发电子邮件客户端.......我遇到了EWS和EWS托管API.请帮我理解我应该选择哪一个?
我可以从Java使用Exchange 2013的EWS吗?我发现Java EWS API不支持2013版本的EWS.
我正在尝试阅读特定的电子邮件帐户,以查找包含未读附件的项目,并在主题中包含某些单词.
我有下面的代码,但只能读取我的收件箱,而不是我要检查的收件箱
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback=CertificateValidationCallBack;
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);// .Exchange2007_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("bbtest@domainname.com"); //, RedirectionUrlValidationCallback); //bbtest@bocuk.local
ItemView view = new ItemView(1);
string querystring = "HasAttachments:true Kind:email";
//From:'Philip Livingstone' Subject:'ATTACHMENT TEST' Kind:email";
// Find the first email message in the Inbox that has attachments.
// This results in a FindItem operation call to EWS.
FindItemsResults<Item> results = service.FindItems(WellKnownFolderName.Inbox, querystring, view);
foreach (EmailMessage email in results)
if (email.IsRead == false) // && email.HasAttachments == …Run Code Online (Sandbox Code Playgroud) 我想对我的应用程序使用Oauth2身份验证。我想使用EWS Java API从O365中获取数据。可能吗?文档http://blogs.msdn.com/b/exchangedev/archive/2014/09/24/10510847.aspx 讨论了如何为REST api获取oauth令牌,如果我也使用同一文档来获取与EWS Web服务一起使用的令牌的话?任何人都可以使用Java共享执行此操作的任何代码示例。
我正在尝试使用SearchFilter.ContainsSubstring过滤Exchange Web Services上的电子邮件,如下所示:
sfilter = New SearchFilter.ContainsSubstring(EmailMessageSchema.Sender, EmailAddress, ContainmentMode.Substring, ComparisonMode.IgnoreCase)
MailItems = service.FindItems(Folder.Id, sfilter, view)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这行不通,并且我不想使用查询,因为我不能保证可以使用Exchange Server 2013的功能。
在Fiddler中编写了各种请求,我可以观察到,如果删除电子邮件地址的最后一个字符,则过滤器起作用,而是删除第一个字符,然后工作-将它们放回原处,弄坏。
因此,也许这很花哨,而且必须是一个真正的子字符串才能使用,因此,如果我将“ Containment”模式更改为“ FullString”,它将不起作用,因此,我无法像“ Substring”或“ FullString”那样进行任何操作。
看起来我将能够做到(缺少最后一个字符的子字符串和缺少第一个字符的子字符串),但是肯定不能那么坏吗?
我该怎么做才能使它起作用?
请注意,我的代码在VB.NET中,但是我无法想象这是问题所在。
干杯,
标记
我有应用程序通知使用EWS托管api(v2.2)创建的新邮件.我正在使用StreamingSubscription来监听邮箱事件.我注意到有时NewMail事件没有被触发(我后来看到邮箱中未处理的邮件),没有引发连接/订阅异常,并且在一段时间后新邮件接收没有发生任何事情......什么可能导致这种行为?在交换日志中没有任何可疑,事件只是没有被解雇......任何想法和建议将不胜感激.
谢谢.
资源:
public class ExchangeClient : IDisposable
{
private ExchangeService _exchange;
private SubscriptionBase _subscription;
private StreamingSubscriptionConnection _connection;
private bool _disposed;
private bool _disposing;
public event EventHandler<ExchangeEventArgs> ExchangeEvent;
public ExchangeClient(string userName, string password, string domain, ExchangeVersion version)
{
_exchange = new ExchangeService(version);
_exchange.Credentials = new WebCredentials(userName, password);
_exchange.AutodiscoverUrl(userName + "@" + domain);
var ids = new FolderId[2] { new FolderId(WellKnownFolderName.Root), new FolderId(WellKnownFolderName.Inbox) };
var events = new List<EventType>();
events.Add(EventType.NewMail);
_subscription = _exchange.SubscribeToStreamingNotifications(ids, events.ToArray());
_connection = new StreamingSubscriptionConnection(_exchange, 30);
_connection.AddSubscription((StreamingSubscription)_subscription);
_connection.OnNotificationEvent …Run Code Online (Sandbox Code Playgroud) 我正在使用Java EWS库,并尝试回复一些消息。主要问题是-如果我只知道邮件的“ Message-ID”标头的值,如何在文件夹或邮箱中找到EmailMessage。
我尝试做这样的事情:
ExtendedPropertyDefinition p = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.InternetHeaders, "Message-ID", MapiPropertyType.String)
myfolder.findItems(new SearchFilter.IsEqualTo(p, "<1031208507.471.1446200157453.JavaMail.test>"), new ItemView(1))
Run Code Online (Sandbox Code Playgroud)
但是结果集是空的!你能帮助我吗?一些Java或C#解决方案?
我按照MSDN上的EWS托管API示例在我的Exchange邮箱帐户中查找所有未读电子邮件.
我后来浏览了每个找到的项目,以便将它们放入我需要返回的列表中,同时获取每条消息的正文IsRead=true并按如下方式更新每个消息:
Folder.Bind(Service, WellKnownFolderName.Inbox);
SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And,
new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
//ItemView limits the results to numOfMails2Fetch items
FindItemsResults<Item> foundItems = Service.FindItems(WellKnownFolderName.Inbox, sf,
new ItemView(numOfMails2Fetch));
if (foundItems.TotalCount > 0)
{
List<EmailMessage> emailsList = new List<EmailMessage>(foundItems.TotalCount);
foundItems.Items.ToList().ForEach(item =>
{
var iEM = item as EmailMessage;
emailsList.Add(iEM);
// update properties
iEM.IsRead = true;
iEM.Update(ConflictResolutionMode.AutoResolve);
});
// fetches and assign the bodies of each email
Service.LoadPropertiesForItems(emailsList,PropertySet.FirstClassProperties);
return emailsList;
} else return null;
Run Code Online (Sandbox Code Playgroud)
是否可以IsRead=true在一个请求中更新所有找到的项目?即不逐一更新它们=更好的性能和连贯的逻辑.