标签: exchangewebservices

C#EWS托管API:如何访问共享邮箱,但不访问我自己的收件箱

如何连接到Exchange服务器并从共享邮箱(不是我自己的"myname@mycompany.com")中读取邮件.

这是我到目前为止的代码:

//Create a service
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
        //Autodiscover end point
        service.AutodiscoverUrl("someaddress@mycompany.com");


        FindFoldersResults folderSearchResults = service.FindFolders(WellKnownFolderName.Inbox, new FolderView(int.MaxValue));

        Microsoft.Exchange.WebServices.Data.Folder exchangeMailbox = folderSearchResults.Folders.ToList().Find(
            f => f.DisplayName.Equals("NameOfSharedMailboxIwant", StringComparison.CurrentCultureIgnoreCase));

        //Set the number of items we can deal with at anyone time.
        ItemView itemView = new ItemView(int.MaxValue);

        foreach (Microsoft.Exchange.WebServices.Data.Folder folderFromSearchResults in folderSearchResults.Folders)
        {
            if (folderFromSearchResults.DisplayName.Equals("NameOfSharedMailboxIWant", StringComparison.OrdinalIgnoreCase))
            {
                Microsoft.Exchange.WebServices.Data.Folder boundFolder = 
                        Microsoft.Exchange.WebServices.Data.Folder.Bind(service, folderFromSearchResults.Id);

                SearchFilter unreadSearchFilter =
                    new SearchFilter.SearchFilterCollection(
                        LogicalOperator.And, new SearchFilter.IsEqualTo(
                            EmailMessageSchema.IsRead, false));

                //Find the unread messages in the email folder.
                FindItemsResults<Item> unreadMessages …
Run Code Online (Sandbox Code Playgroud)

.net c# exchangewebservices

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

Microsoft.Exchange.WebServices在VS2010中不起作用

我使用EWS ExchangeService来阅读来自outlook的电子邮件......我已经在Console项目和VS2008中编码了...一切正常,因为它......我可以阅读电子邮件.

为了与VS2010变得更加熟悉,我创建了一个控制台项目并将复制复制到VS2010项目.

所以我在Microsoft\Exchange\Web Services\1.1\Microsoft.Exchange.WebServices.dll文件夹中添加了引用"Microsoft.Exchange.WebServices"(版本14.2.51.0).

一切都按原样运行,所以我看到了intellisence,我看到Exhange组件的方法属性等...

使用Microsoft.Exchange.WebServices.Data;

第一个问题:

问题: - 当我点击VS2010中的构建按钮时......我收到此错误:命名空间"Microsoft"中不存在类型或命名空间名称"Exchange"(您是否缺少程序集引用?)表单在这里,Exchange程序集的所有方法/属性都被挤压下划线... Intellisence不再适用于Exchange程序集.当我从引用中删除程序集并重新添加时,我再次获得了intellesence以进行Exchange程序集...但是当我单击build时会再次发生:(所以我转到我的代码并键入"Microsoft".我看不到再说一遍......

所以我不明白为什么会这样,它适用于VS2008和VS2010它不起作用?我认为唯一的方法是VS是Framework 3.5,VS2010是V4.0

任何想法在哪里看?以及如何解决这个问题?

第二个问题:

  • 我需要获取电子邮件的附件..所以当电子邮件到达特殊电子邮件帐户时,我需要获取附件并将​​附件文件保存到特定文件夹.这里最好的方法是什么?在Console项目中创建代码并创建Windows服务项目?或只是控制台项目或只是Classlibrry项目并添加到任务计划程序?所以我需要一些关于如何在项目级别进行处理的建议......编程逻辑已经存在.

但正如我在第一个问题中所说,我在VS2008中使用它,但在按下Build按钮后VS2010不知道Exchange汇编.

c# exchange-server exchange-server-2007 exchangewebservices

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

如何使用EWS托管API从PublicFolders的文件夹和子文件夹中获取所有ITEMS

如何从Exchange Server2010 uisng托管API中的"公共文件夹"及其"子文件夹"中检索所有项目?

rootfolder = Folder.Bind(service,WellKnownFolderName.PublicFoldersRoot);
rootfolder.Load();                                             
foreach (Folder folder in rootfolder.FindFolders(new FolderView(int.MaxValue)))
{
FindItemsResults<Item> findResults = folder.FindItems(iv); 
 foreach (Item item in findResults)

         {
            //get item info;
         } 
}
Run Code Online (Sandbox Code Playgroud)

"如果我这样做,我不会在它的子文件夹中出现项目..公共文件夹也不支持深度遍历查询..如何从公用文件夹的子文件夹中获取项目???"

c# api exchange-server exchangewebservices

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

Exchange Web服务:为什么ItemId不是常量?

我编写了一个小应用程序,它应该自动处理来自公用文件夹的电子邮件.对于每封电子邮件,我们希望在数据库中保存一些元数据.

我想使用ItemID来建立此元数据和特定电子邮件之间的链接,我刚刚发现此ItemId不是常量.例如,如果电子邮件从公用文件夹移动到另一个文件夹,它将收到另一个ItemId.这意味着,电子邮件和相关元数据之间的链接将丢失.

所以,问题是,如何在元数据和特定电子邮件之间建立链接?

c# exchange-server exchangewebservices

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

在asp.net中使用EXCHANGE SERVER(Microsoft Outlook Web访问)发送邮件

我知道如何使用安装在同一台机器上的outlook发送邮件,我正在运行我的代码.现在,这里的要求是访问我的组织的Exchange服务器(Microsoft OWA),以便在asp.net代码中发送邮件.

可能吗?如果是,那么请扔掉一些光.

日Thnx

UPDATE

得到了解决方案.在这里为任何想要帮助的人发布我的工作代码.快乐的编码!

protected void Button1_Click(object sender, EventArgs e)
{
     ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
    //service.AutodiscoverUrl("youremailaddress@yourdomain.com");

    service.Url = new Uri("https://yourwebmailaddress.com/ews/Exchange.asmx");

    service.UseDefaultCredentials = true;
    //service.Credentials = new WebCredentials("username", "password");


    EmailMessage message = new EmailMessage(service);
    message.Subject = "My auto mail from exchange server";
    message.Body = "hi everyone !";
    message.ToRecipients.Add("brad.pitt@hollywood.com");
    message.Save();

    message.SendAndSaveCopy();

    Label1.Text = "Success !";    
}
Run Code Online (Sandbox Code Playgroud)

另一个问题:如何使用microsoft exchange 2003?那里不支持coz EWS.请更新任何想法......?

c# asp.net exchange-server exchangewebservices

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

使用PHP和cURL访问Exchange Web服务

你好,

我目前正在编写一个客户端来访问Microsoft Exchange服务器并从中读取联系人,约会等.

经过几天的搜索,我已经能够通过PHP的Soap客户端和自定义HTTPS流包装器连接到EWS.这个网站在这一点上给了我很大的帮助.

使用XAMPP在我的Windows 7机器上一切正常

现在我将我的项目上传到Debian 6.0 Squeeze开发机器,它与我的Windows机器完全相同,关于web服务器,php设置,mysql设置等等,但它不再适用了

debian机器可以毫无问题地解析和ping交换服务器

我将实际问题解决到了一定程度,其中cURL无法检索EWS的WSDL文件

它始终收到空响应和401(未授权)状态代码

我使用的凭据是正确的,相同的凭据在我的Windows机器上工作

我提取了有问题的代码并尝试独立运行它,它看起来像这样:

    echo "Trying to get https://".$cfg[ 'Exchange.Server' ]."/EWS/Services.wsdl<br>";
    $curl = curl_init( 'https://'.$cfg[ 'Exchange.Server' ].'/EWS/Services.wsdl' );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER,     true );
    curl_setopt( $curl, CURLOPT_HTTP_VERSION,       CURL_HTTP_VERSION_1_1 );
    curl_setopt( $curl, CURLOPT_HTTPAUTH,           CURLAUTH_NTLM );
    curl_setopt( $curl, CURLOPT_USERPWD,            $cfg[ 'Exchange.User' ].':'.$cfg[ 'Exchange.Password' ] );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER,     false );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST,     false );

    echo '<pre>';
    $response = curl_exec( $curl );
    $info = curl_getinfo( $curl );

    var_dump( $info );
    var_dump( …
Run Code Online (Sandbox Code Playgroud)

php curl ntlm exchangewebservices http-status-code-401

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

我是否可以避免存储MS Exchange凭据,同时仍能进行身份验证(针对EWS)?

我正在构建一个应用程序,用于同步用户的Exchange Server帐户(支持的版本2007-2013)和应用程序之间的数据.

应用程序不能使用模拟(至少不在典型情况下),因为用户可以在任意数量的域和交换服务器上.

我知道我最初不得不要求他们的用户名/电子邮件地址和密码.但是,如果我不需要,我真的不想负责存储这些凭据(即使它们是加密的,我宁愿不加密).

我不确定要问什么问题,所以我要跟这些:

Exchange Server如何进行身份验证?用户的凭据是否按原样直接发送到服务器,还是在通过网络发送之前进行了哈希处理?如果它们被散列,我如何获得/生成此哈希以便在连续的身份验证中重用?

Exchange Server是否发送某种可以在以后重复使用的身份验证令牌(永远,直到密码更改或失效)?

如果您知道该问题的解决方案,这些问题的答案无法解决,请改为提供.

c# exchange-server exchangewebservices

12
推荐指数
2
解决办法
1908
查看次数

Exchange FindItem使用一组商品ID和多个商品ID的不同属性集进行响应

当我通过ExchangeService.LoadPropertiesForItems方法加载多个交换项的属性时,Exchange会跳过响应中的项附件的一些属性:

<t:CalendarItem>
  <t:ItemId Id="itemId" ChangeKey="itemChangeKey"/>
  <t:Subject>Test appointment</t:Subject>
  <t:Attachments>
    <t:FileAttachment>
      <t:AttachmentId Id="firstAttachmentId"/>
      <t:Name>pdf.pdf</t:Name>
      <t:Size>94150</t:Size>
      <t:LastModifiedTime>2015-08-03T10:54:40</t:LastModifiedTime>
      <t:IsInline>false</t:IsInline>
      <t:IsContactPhoto>false</t:IsContactPhoto>
    </t:FileAttachment>
    <t:FileAttachment>
      <t:AttachmentId Id="secondAttachmentId"/>
      <t:Name>ATT89202</t:Name>
      <t:Size>3803738</t:Size>
      <t:LastModifiedTime>2015-12-03T16:40:46</t:LastModifiedTime>
      <t:IsInline>true</t:IsInline>
    </t:FileAttachment>
  </t:Attachments>
</t:CalendarItem>
Run Code Online (Sandbox Code Playgroud)

如您所见,上面的回复不包括ContentId属性.但是,当我使用类的Load方法Item来加载单个项的属性时,EWS Managed API生成GetItem具有单个项ID 的相同SOAP请求,并使用扩展的附件属性集响应Exchange:

<t:CalendarItem>
  <t:ItemId Id="itemId" ChangeKey="itemChangeKey"/>
  <t:Subject>Test appointment</t:Subject>
  <t:Attachments>
    <t:FileAttachment>
      <t:AttachmentId Id="firstAttachmentId"/>
      <t:Name>pdf.pdf</t:Name>
      <t:ContentId>25F20E449DEC42B67EB3DE58C51E56E3BE0B27F5@1</t:ContentId>
      <t:Size>94150</t:Size>
      <t:LastModifiedTime>2015-08-03T10:54:40</t:LastModifiedTime>
      <t:IsInline>false</t:IsInline>
      <t:IsContactPhoto>false</t:IsContactPhoto>
    </t:FileAttachment>
    <t:FileAttachment>
      <t:AttachmentId Id="secondAttachmentId"/>
      <t:Name>ATT89202</t:Name>
      <t:ContentId>DB969CA378C5F9565E98779626E3BCA3A65FB275@1</t:ContentId>
      <t:Size>3803738</t:Size>
      <t:LastModifiedTime>2015-12-03T16:40:46</t:LastModifiedTime>
      <t:IsInline>true</t:IsInline>
    </t:FileAttachment>
  </t:Attachments>
</t:CalendarItem>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在第二个响应ContentId属性中呈现了此外,当我使用ExchangeService.LoadPropertiesForItems方法时,将单个项目作为第一个参数传递,Exchange也将Attachment.ContentId属性包含在响应中.

有没有办法我可以获得ContentId项目附件的属性而不分别为所有项目加载属性?

.net c# exchangewebservices ews-managed-api

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

删除EWS约会正文文本

EWS使用正文中的默认"When"文本创建约会.请看下面的图片:

在此输入图像描述

我想知道是否有可能删除或隐藏此文本.

这是我使用EWS托管API创建约会的代码

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
service.Credentials = new WebCredentials("ews_calendar", PASSWORD, "acme");
service.Url = new Uri("https://acme.com/EWS/Exchange.asmx");

Appointment newAppointment = new Appointment(service);
newAppointment.Subject = "Test Subject";
newAppointment.Body = "Test Body";
newAppointment.Start = new DateTime(2012, 07, 19, 17, 00, 0);
newAppointment.End = newAppointment.Start.AddMinutes(30);
newAppointment.RequiredAttendees.Add("first.last@acme.com");

// create new appointment
newAppointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
Run Code Online (Sandbox Code Playgroud)

exchangewebservices outlook-2010

11
推荐指数
1
解决办法
1444
查看次数

无法使用EWS Java API获取发件人电子邮件地址

我正在使用EWS Java API 1.1.5.我试图让电子邮件发件人如下:

ItemView view = new ItemView(10);
FindItemsResults<Item> findResults = service.findItems(
    WellKnownFolderName.Inbox, view);
    for (Item item : findResults.getItems()) {
        if (item instanceof EmailMessage) {
            String senderEmail = ((EmailMessage) item).getSender().getAddress();
            System.out.println("Sender Email: " + senderEmail);
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

但它总是回归null.我也尝试过以下方法:

String senderEmail = ((EmailMessage) item).getFrom().getAddress();
Run Code Online (Sandbox Code Playgroud)

但它也会回归null.我可以看到该电子邮件包含发件人,如:

Test User <testuser@testdomain.com> 
Run Code Online (Sandbox Code Playgroud)

它出现在邮件中以及回复电子邮件时.

请告知如何解决此问题.

exchange-server exchangewebservices ewsjavaapi

11
推荐指数
1
解决办法
4295
查看次数