2012-02-07 5 views
0

Итак, есть много сообщений об этой ошибке, которую я получаю. Но большинство имеют дело с IIS.Как отключить ретрансляцию и использовать мой код в качестве аутентифицированного клиента?

Почтовый ящик недоступен. Ответ сервера был: 5.7.1 Не удалось передать

Я портировал свой код на консоль, чтобы увидеть, все еще получаю эту ошибку, и я делаю. Казалось бы, он все еще использует ISS как реле или что-то еще, хотя это консольное приложение?

Я говорил с администратором Exchange, и он не собирается открывать почтовый сервер для какой-либо ретрансляции или разрешить моему серверу делать это. Поэтому я хотел бы, чтобы мой код C# отправил электронное письмо в качестве обычного аутентифицированного клиента, как если бы это был прогноз.

Мой код ниже работает, если я отправляю его кому-то в пределах моего собственного домена, но не если получатель находится за пределами домена.

Как отключить ретрансляцию и использовать мой код в качестве аутентифицированного клиента, чтобы я мог отправлять электронные письма людям за пределами моего домена? не

КОД:

static void Main(string[] args) 
{ 
    Console.WriteLine("Sending Mail..."); 
    try 
    { 
     SmtpClient _SMTPServer = new SmtpClient("companymailserver", 587); 
     _SMTPServer.Credentials = new System.Net.NetworkCredential("myusername", "mypassword"); 

     MailMessage _mailMessage = new MailMessage(); 
     _mailMessage.To.Add(new MailAddress("[email protected]")); 
     _mailMessage.From = new MailAddress("[email protected]"); 
     _mailMessage.IsBodyHtml = false; 
     _mailMessage.Subject = "This is a test"; 
     _mailMessage.Body = "This is the body"; 

     _SMTPServer.Send(_mailMessage); 
    } 
    catch (Exception err) 
    { 
     Console.WriteLine("error: " + err.Message); 
    } 
    Console.WriteLine("Press any key to continue..."); 
    Console.Read(); 
} 

UPDATE # 1

Странная вещь независимо от того, какие полномочия я положил я получаю такую ​​же 'Невозможно передать' ошибку. Как будто он не выполняет ретрансляцию и игнорирует мои настройки SmtpClient.

+0

Это настройки исходящего почтового сервера, я не думаю, что есть что-то вы можете сделать код мудрый, чтобы позволить этому. – kd7

+0

@ kd7 Почему я не могу отправлять почту как обычный SmtpClient без ретрансляции? ведь класс называется «SmtpClient». Сервер позволяет любым аутентифицированным клиентам отправлять электронные письма кому-либо. – capdragon

+0

Это должно быть возможно, так или иначе. Большинство почтовых серверов разрешают ретрансляцию, если электронное письмо от пользователя с почтовым ящиком в системе и пользователь аутентифицирован. В противном случае пользователи никогда не смогут отправлять электронную почту другим компаниям. – CodeThug

ответ

0

Я предполагаю, что аутентификация не удалась. Попробуйте включить доменное имя.

_SMTPServer.Credentials = 
    new System.Net.NetworkCredential("myusername", "mypassword", "mydomain");

Кроме того, убедитесь, что установлен UseDefaultCredentials ложной

_SMTPServer.UseDefaultCredentials = false;
+0

Пробовал, что. Не работал :/. – capdragon

+0

Попробуйте еще раз - я добавил примечание об использовании UseDefaultCredentials, которое я забыл до съемки – CodeThug

+0

, 'UseDefaultCredentials' звучало многообещающим. Но все-таки ошибка и все остальное. – capdragon