Умеет отправлять почту через .exe, но не через ASP.NET? - PullRequest
0 голосов
/ 24 марта 2009

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

private void button1_Click(object sender, EventArgs e)
    {
        MailMessage message = new MailMessage(welcomeMessageFrom, toAddress, welcomeMessageSubject, welcomeMessageSubject);
        SmtpClient emailClient = new SmtpClient("mail.sortuv.com");

        System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(username, password);
        emailClient.UseDefaultCredentials = false;
        emailClient.Credentials = SMTPUserInfo;
        emailClient.Send(message);
    }

Однако при попытке использовать тот же код со страницы ASP.NET выдается следующее исключение:

Mailbox unavailable. The server response was: 5.7.1 Unable to relay for <user's email>

Я новичок в IIS, но у вас есть предложения по отладке?

ОБНОВЛЕНИЕ : Мне также пришлось указать домен для пользователя. Все еще не уверен, почему обычный .exe был в порядке без него. Надеюсь, это кому-нибудь поможет.

Ответы [ 5 ]

1 голос
/ 24 марта 2009

Кажется, проблема с учетными данными. Обычный exe работает под вашей учетной записью. Приложение ASP.NET запускается в СЕТЕВОМ СЕРВИСЕ в Windows Server и ASPNET в Windows XP. Вы должны использовать другие учетные данные для успешной отправки электронной почты из ASP.NET

0 голосов
/ 01 апреля 2009

Спасибо за помощь, ребята, я только что понял. Я должен был указать домен:

SmtpClient emailClient = new SmtpClient(servername);

            System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(name, pass);
            SMTPUserInfo.Domain = domain; // i.e. "foo.com"
            emailClient.UseDefaultCredentials = false;
            emailClient.Credentials = SMTPUserInfo;
            emailClient.Send(message);
0 голосов
/ 25 марта 2009

Это для IIS7, так как у меня была проблема с симуляцией, я должен был включить службу smtp на сервере

И настроить почту для каждого домена там

0 голосов
/ 24 марта 2009

Вы что-нибудь настраиваете свой web.config, касающийся параметров почты? IIRC, web.config переопределит ваши настройки кода.

Кроме того, вы можете включить ведение журнала, чтобы увидеть, что отправляет SmtpClient.

Вам необходимо добавить некоторые значения в ваш файл .config. Вот пример:

    <configuration>
    <system.diagnostics>
    <trace autoflush="true" />

    <sources>

      <source name="System.Net" >
        <listeners>
          <add name="MyTraceFile"/>
        </listeners>
      </source>

      <source name="System.Net.Sockets">
        <listeners>
          <add name="MyTraceFile"/>
        </listeners>
      </source>

    </sources>


    <sharedListeners>
      <add
        name="MyTraceFile"
        type="System.Diagnostics.TextWriterTraceListener"
        initializeData="System.Net.trace.log"                />
    </sharedListeners>

    <switches>
      <add name="System.Net" value="Verbose" />
      <add name="System.Net.Sockets" value="Verbose" />
    </switches>
 </configuration>

Вот ссылка с дополнительной информацией: http://systemnetmail.com/faq/4.10.aspx

0 голосов
/ 24 марта 2009

Попробуйте добавить

emailClient .DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...