2

我尝试使用:Microsoft.Exchange.WebServices.dll 来使用 Outlook。但连接返回错误

错误返回行:service.AutodiscoverUrl("myusernamek@xxxx.com");

找不到自动发现服务。我的代码:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;
using Microsoft.Exchange.WebServices.Data;
using Microsoft.Exchange.WebServices.Autodiscover;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Connect to Exchange Web Services as user1 at contoso.com.
                ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
                service.Credentials = new WebCredentials("myusernamek@xxxx.com", "mypassword", "xxxx.com");
                service.TraceEnabled = true;
                service.AutodiscoverUrl("myusernamek@xxxx.com");

                // Create the e-mail message, set its properties, and send it to user2@contoso.com, saving a copy to the Sent Items folder. 
                EmailMessage message = new EmailMessage(service);
                message.Subject = "Interesting";
                message.Body = "The proposition has been considered.";
                message.ToRecipients.Add("recipientname@xxxx.aero");
                message.SendAndSaveCopy();

                // Write confirmation message to console window.
                Console.WriteLine("Message sent!");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
                Console.ReadLine();
            }

        }
    }
}

替代文字

4

5 回答 5

2

我知道这是一个老问题,但最近遇到了这个和类似的错误(包括 ISA 服务器)。它被修复了:

service.EnableScpLookup = false;

这在使用显式 URL 时不是必需的,但在使用 AutoDiscover 时是必需的

于 2012-06-25T05:52:25.083 回答
0

这是一个常见的问题,当这个exchange的自动发现服务关闭时会遇到自动发现服务错误

解决方案是为交换位置提供实际 URL,而不是自动发现它。

这解决了我同样的问题。

于 2013-06-20T12:01:07.743 回答
0

该代码表明您有一台 Exchange 2007 服务器...是否正确配置为使用自动发现功能?确认您可以 ping autodiscover.XXXX.com 并在 Web 浏览器中查看https://autodiscover.XXXX.com 。

或者,您可能需要使用内部域名进行自动发现和登录。例如,在我的办公室中,外部电子邮件地址位于类似的域中CompanyX.com,但内部 Active Directory 域是类似的CompanyX.local,并且我们在开放的 Internet 上没有自动发现,因此我的 EWS 需要定位Autodiscover.CompanyX.local

于 2010-10-08T19:50:30.097 回答
0

这是一个旧帖子,但也许有人会需要它。不要使用自动发现,它很慢。

如何找到您的交换网址:

  • - 打开您的 Outlook 应用程序并连接到您的交易所
  • - 按住 Ctrl 键并右键单击系统托盘中的 Outlook 图标
  • -选择“测试电子邮件自动配置”
  • -单击测试按钮
  • - 查找以下行:

在此处输入图像描述

哦,要使用你增加那一行代码的 url:

service.Url = new Uri("your url here");
于 2020-03-13T17:27:53.670 回答
-2

试试这些概念:

private static ExchangeService getService(String userEmail, String login, String password, String hostName)
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); 
    AutodiscoverService auservice = new AutodiscoverService(hostName);
    if (auservice.ServerInfo != null) 
    {
        try
        {
            service.AutodiscoverUrl(userEmail, RedirectionUrlValidationCallback);
        }
        catch (AutodiscoverRemoteException ex)
        {
            Console.WriteLine("Exception thrown: " + ex.Error.Message);
        }

    }
    else
    {
        service.Url = new Uri("https://" + hostName + "/EWS/Exchange.asmx");
    }

    service.UseDefaultCredentials = true;


    if (service.ServerInfo == null)
    {
        service.Credentials = new WebCredentials(login, password);
    }
    return service;
}
于 2013-02-01T12:23:23.423 回答