当前位置: 首页 > 知识库问答 >
问题:

如何查询Exchange mail server中的电子邮件项目?

柴英光
2023-03-14

我正在尝试升级现有的应用程序,使用WebDAV读取Exchange 2003。邮件服务器将升级到Exchange 2013,所以我正在检查如何使用EWS。

我有一个问题,虽然我知道收件箱中有带附件的未读项目,但我对FindItems对象运行的查询返回空。。。

以下是我的代码片段:

private static void GetAttachments(ExchangeService service)
{
    // Return a single item.
    ItemView view = new ItemView(100);
    ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);// .Exchange2007_SP1);

    service.UseDefaultCredentials = true;
    service.AutodiscoverUrl("bbtest@bocuk.local", RedirectionUrlValidationCallback);

    ItemView view = new ItemView(1);

    string querystring = "HasAttachments:true 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);

    //FindItemsResults<Item> results = service.FindItems(WellKnownFolderName.Inbox, new ItemView(50));

    if (results.TotalCount > 0)
        {
            // looping through all the emails
            for (Int16 iDx = 0; iDx < results.TotalCount-1; iDx++)
            {

                EmailMessage email = results.Items[iDx] as EmailMessage;

                if (email.IsRead == false) { 

                    // Request all the attachments on the email message. This results in a GetItem operation call to EWS.
                    email.Load(new PropertySet(EmailMessageSchema.Attachments));

                    foreach (Attachment attachment in email.Attachments)
                    {
                        if (attachment is FileAttachment)
                        {
                            FileAttachment fileAttachment = attachment as FileAttachment;

我应该做的是读取目标收件箱(只有一台Exchange服务器)中所有未读的电子邮件,并将附件存储在磁盘上,这样我就可以将它们作为附件添加到SalesForce的新案例中。

我哪里出错了?

此外,这一行:

ItemView view = new ItemView(100);

是:

ItemView view = new ItemView(1);

这肯定只会查找一个电子邮件项目,对吗?

共有1个答案

危砚
2023-03-14

我提交了以下XML并获得了预期的结果。了解情况的最简单方法是查看XML。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
 <soap:Header>
    <t:RequestServerVersion Version="Exchange2010_SP2"/>
  </soap:Header>
<soap:Body>
    <FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
              Traversal="Shallow">
      <ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
      </ItemShape>
      <ParentFolderIds>
        <t:DistinguishedFolderId Id="inbox"/>
     </ParentFolderIds>
      <QueryString>HasAttachments:true Subject:'ATTACHMENT TEST' Kind:email</QueryString>
    </FindItem>
  </soap:Body>
</soap:Envelope>
 类似资料:
  • 我创建了带有媒体查询的响应式HTML电子邮件,但在Gmail/Outlook/Inbox中,媒体查询中的max-width指的是浏览器视口,而不是HTML电子邮件。 所以,在本地主机上,我的邮件切换到700px以下的移动显示,在Gmail/Outlook/Inbox中,这种行为被打破了。 您是否有一个解决方案,使媒体查询视口作为邮件视口,而不是浏览器视口?

  • 我有两个php值,分别是$email和$pass。 email-MySQL数据库中的行名称password-MySQL数据库中的行名称 我正在运行一个sql查询,从电子邮件=$email和密码=$pass的表成员中进行选择。 然后我运行mysqli_query,看看是否存在一行,我没有得到任何结果。回声肯定会回声出信息匹配的地方的ID。

  • 我需要建立一个响应的电子邮件模板。我做了我的研究,并了解到媒体查询不是广泛支持电子邮件客户端。 因此,我尝试不使用媒体查询,并使用。 > 但是如果我想更改移动版本的字体大小怎么办?另外,我有一个案例,客户端希望很少的块是可见的,在移动,但不是在桌面。没有媒体查询,我如何实现这些? 另外,在我添加样式规则和媒体查询的情况下,我猜iOS支持媒体查询。但是媒体查询下的规则不会出现,但是中定义的其他规则可

  • 尝试使用Google云功能和Firebase创建REST身份验证系统。这里的Firebase文档说: 要实现这一点,必须创建一个服务器endpoint,该endpoint接受登录凭据(如用户名和密码),如果凭据有效,则返回一个自定义JWT。 我看到我必须做这样的事情: 但是想知道从登录表单验证电子邮件/密码有效性并获取uid(全部在Cloud Functions中)然后发送到的最佳方法?

  • 我正在使用spring Boot从java发送HTML电子邮件。电子邮件包括签名与我们公司的形象标志。它工作得很好。在Gmail上。但在MacOS应用程序电子邮件中,徽标是作为附件发送的,而不是内联的。 代码的非相关部分替换为...

  • 问题内容: 有没有一种使用正则表达式检查表单输入的好方法,以确保它是正确的样式电子邮件地址?自昨晚以来一直在搜索,如果它是子域的电子邮件地址,则回答了有关该主题的人们疑问的每个人似乎也有问题。 问题答案: 无关紧要。即使你可以验证该电子邮件地址在语法上是有效的,你仍然需要检查该电子邮件地址是否未键入错误,以及该地址是否确实属于你认为确实有用的人。唯一的方法是向他们发送电子邮件,并让他们单击链接进行