2011-01-26 4 views
1

Моя проблема заключается в том, что я не могу отправлять письма SMTP, отправленные получателем, размещенным на моем сервере. У меня есть контактные формы, которые отлично работают для писем с получателем в качестве внешнего адреса электронной почты, но теперь мне требуется, чтобы одна из моих систем отправляла электронные письма из домена, размещенного на том же сервере, любому другому предоставленному электронному письму (подписчику), и это просто дает мне ошибка:Отправка электронной почты через SMTP с внутреннего адреса электронной почты - почтовый ящик недоступен или не локальный (.NET 4)

Error Sending Email: Mailbox unavailable. The server response was: Requested action not taken: mailbox unavailable or not local

Я бегу MailEnable на сервере окна с IIS7 и спрашивает, если кто-нибудь с этой проблемой? Я протестировал почтовый ящик, используя приведенные выше данные, используя Outlook, и он отправляет/получает письма в порядке. Ниже приведен пример кода, показывающий, что я использую, и насколько я знаю, он должен быть аутентифицирован. Я также попытался переместить настройки конфигурации обратно в код C# и имел ту же проблему.

Пример web.config:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network" from="[email protected]"> 
      <network defaultCredentials="true" host="mail.test.com" port="25" userName="[email protected]" password="******" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

Пример C# .NET 4 код:

try 
{ 
_emailMsg.Body = _MessageBody; 
_emailMsg.Priority = MailPriority.Normal; 

SmtpClient mSmtpClient = new SmtpClient(); 

mSmtpClient.UseDefaultCredentials = true; 

mSmtpClient.Send(_emailMsg); 
return true; 
} 
catch (Exception ex) 
{ 
throw new Exception("Error Sending Email: " + ex.Message); 

return false; 
} 
+0

Где вы настройки получателя электронной почты? – codingbadger

+0

К сожалению, я настраиваю объект электронной почты до этого, но он настроен на текущего зарегистрированного пользователя, и когда я его отлаживаю, это показывает, что это значение существует. – Andrew

+1

В коде нет ничего плохого - уверены ли вы, что получатель находится в одном домене? – codingbadger

ответ

2

Глядя на веб-сайте MailEnable, есть некоторые guidance on the error messages, которые могут произойти.

Гадание немного дальше, кажется, что доменное имя существует на веб-сервере, и нет никакой проблемы нет, но вы должны в явном белом списке любые адреса электронной почты в файле address-map.tab. Есть еще замечания по этому вопросу и их решение в полном объеме является:

The resolution here really resolves around when you think this error is being returned when it should not be. If the address is thought to exist on the server then you need to check the SMTP logs activity for the transaction and then the debug to see if there are any error descriptions that better explain what happened when the address was sent to. Then you should check your configuration to ensure that the address does exist. It can also be a good idea to check the address-map.tab file in the MailEnable\Config directory or relevant database table for a line that contains the mailbox name in question. If you are checking why the sender could not relay through the server then you should at this time check the client settings and ensure that the outbound settings in the client are configured as such so they can relay through the server to non local email addresses.

+0

Это была комбинация этого и учетных данных (по умолчанию использовались и не должны были) – Andrew

1

Используйте это:

try { 
    _emailMsg.Body = _MessageBody; 
    _emailMsg.Priority = MailPriority.Normal; 

    SmtpClient mSmtpClient = new SmtpClient(server,25); 
    mSmtpClient.Send(_emailMsg); 
    return true; 
} catch (Exception ex) { 
    throw new Exception("Error Sending Email: " + ex.Message); 
    return false; 
} 
+3

Добро пожаловать в Stack Overflow! Вместо того, чтобы размещать блок кода, пожалуйста, * объясните *, почему этот код решает поставленную проблему. Без объяснений это не ответ. –