2013-04-01 2 views
1

В настоящее время я пытаюсь использовать SmtpClient для отправки электронной почты с помощью Exchange 2003. Используя приведенный ниже код, он не отправит электронное письмо, но он не генерирует исключение, которое, я полагаю, означает, что он делает соединение на сервер обмена, потому что. Также для настройки сервера я попробовал mail.server.com, а также IP-адрес, и он по-прежнему не генерирует исключение.Exchange 2003 с C# smtpclient

 public static void emailTest() 
    { 
     string fromEmail = @"[email protected]"; 
     string ToEmail = @"[email protected]";   
     string body = "C Stuck Batches"; 
     string subject = "C Stuck Batches"; 

     try 
     { 
      SmtpClient MyMail = new SmtpClient("x.x.x.x"); 
      MyMail.DeliveryMethod = SmtpDeliveryMethod.Network; 
      MyMail.UseDefaultCredentials = false; 
      MyMail.Credentials = new NetworkCredential(@"domain\user", "password"); 

      MyMail.Send(fromEmail, ToEmail, subject, body); 
      MessageBox.Show("Sent", "SENT", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Exception", "Exception", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 
     } 
    } 

Я прочитал несколько других проблем, но, насколько я мог сказать, большинство других получали какие-то исключения или тайм-аут. Поскольку это похоже на то, что оно соединяется, я не уверен, в чем проблема. Вызовет ли это исключение, если он не сможет получить доступ к серверу? Если я выброшу другой IP-адрес на сервер, он выкинет исключение.

Также я пробовал как IP-адрес сервера, так и mail.xx.com, и он не будет генерировать исключение ни с одной, но если я поместил другие адреса, это не удастся.

Заранее благодарим за любую помощь!

+0

У домена \ пользователь есть разрешение на отправку как на [email protected]? – RandomUs1r

+0

@ RandomUs1r Да Я использовал пользователя домена, связанного с учетной записью, а также с администратором. – h8a

+0

Это, безусловно, самая распространенная проблема, я могу запустить виртуальную машину и попробовать войти в Outlook с помощью учетной записи домена, которую вы используете, и посмотреть, можете ли вы добавить и отправить почтовый ящик, чтобы быть абсолютно уверенным. Другие вещи, которые могут пойти не так ... попробуйте указать порт как 2-й аргумент smptclient, вы можете попробовать посмотреть, что говорят журналы сервера Exchange. Однако ваш код выглядит корректно. – RandomUs1r

ответ

1

Проблемы, которые были у меня были, заключались в том, что даже администраторы домена не имели доступа к реле SMTP. Я должен был убедиться, что пользователь был аутентифицирован в SMTP-реле. Независимо от того, что аутентифицирующий пользователь был таким же, как и используемый адрес электронной почты, у этого пользователя не было доступа. После исправления он смог отправить без проблем.

2

Является ли ваш сервер Exchange настроен для ретрансляции почты с вашего IP-адреса? Если это не так, почта может быть «молча» отброшена без выброса исключения (клиент подключается правильно, это задняя часть, которая отбрасывает письмо)

This link содержит дополнительную информацию о том, как настроить ретрансляцию на Exchange 2003 (Я предполагаю, что «eSupport» будет соответствовать вашему приложению в этом примере, то есть IP-адрес машины, на которой запущен ваш код).

Зайдите на сервер Exchange 2003 (192.168.5.25 в моем примере выше) и запустите диспетчер Exchange System Manager.

Разверните объект имя_организации, а затем разверните узел Сервер. Разверните объект server_name сервера, на котором вы хотите управлять почтовым ретранслятором, а затем разверните узел «Протоколы».

Разверните узел SMTP, щелкните правой кнопкой мыши виртуальный сервер SMTP, на котором вы хотите управлять ретрансляцию почты, а затем нажмите кнопку Свойства

Нажмите кнопку Relay.

В диалоговом окне «Ограничение ретрансляции» доступно несколько опций. По умолчанию включен только список ниже. список ниже этого параметра пуст.

Нажмите «Добавить». Введите IP-адрес сервера, на котором работает eSupport (192.168.5.80 в моем примере выше).

В диалоговом окне «Ограничения ретрансляции» нажмите «ОК».

Нажмите «Применить», а затем нажмите «ОК» в диалоговом окне «Свойства виртуального сервера SMTP по умолчанию».

+0

Спасибо за быстрый ответ. Я проверил, и он уже настроен, чтобы позволить этому аппарату получить доступ к реле smtp. – h8a

Смежные вопросы