2010-06-08 5 views
2

У меня есть веб-приложение, работающее на IIS в домене моей компании и доступ к которому осуществляется через интрасеть. У меня есть приложение, отправляющее электронную почту на основе некоторых действий пользователя. Например, его приложение для планирования частично, поэтому, если задача завершена, электронное письмо отправляется, уведомляя других пользователей об этом.Почему System.Net.Mail работает в одной части моего веб-приложения C# .net, но не в другом?

Проблема в том, что письмо работает безупречно в некоторых случаях, а не в других. У меня есть страница login.aspx, которая отправляет сообщения электронной почты при загрузке страницы (ее загружают один раз в день с помощью планировщика задач Windows) - это всегда работает отлично. У меня есть страница обновления, которая должна отправлять электронную почту при вводе текста и нажать кнопку «Обновить» - эта операция не удастся в большинстве случаев. Обе эти задачи используют один и тот же статический перегруженный метод, который я написал для отправки электронной почты с помощью System.Net.Mail.

Я попытался использовать gmail как мой smtp-сервер (вместо нашего внутреннего) и получить те же результаты.

Я исследовал, имеет ли место работа локальной службы SMTP, и это не похоже. Кроме того, поскольку C# является кодом на стороне сервера, разве это не важно, что работает на сервере, а не на клиенте?

Пожалуйста, помогите мне выяснить, в чем дело! Где я должен смотреть? Что я могу попробовать?

Ниже приводится мой код для отправки электронной почты.

public static void sendEmail(String[] recipients, String sender, String subject, String body, String[] attachments) 
{ 
     MailMessage message; 
     try 
     { 
      message = new MailMessage(sender, recipients[0]); 
     } 
     catch (Exception) 
     { 
      return; 
     } 
     foreach (String s in recipients) 
     { 
      if (!message.To.Contains(new MailAddress(s))) 
       message.To.Add(s); 
     } 
     message.From = new MailAddress(sender); 
     message.Subject = subject; 
     message.Body = body; 
     message.IsBodyHtml = true; 
     SmtpClient smtp = new SmtpClient("PRIVATE.PRIVATE.PRIVATE", 25); 
     smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 
     smtp.UseDefaultCredentials = true; 
     if (attachments.Count() > 0) 
     { 
      foreach (String a in attachments) 
      { 
       message.Attachments.Add(new Attachment(a)); 
      } 
     } 
     try 
     { 
      smtp.Send(message); 
     } 
     catch (Exception e) 
     { 

     } 
    } 
} 
+1

Какая ошибка возникает при отправке сообщения? Если сообщение отправляется без ошибок, но не принимается, это может быть просто спам-фильтрация на основе содержимого сообщения. –

+1

Пожалуйста, отправьте код, который отправляет электронное письмо. Без этого для вас очень сложно помочь. – Raja

+0

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

ответ

1

Вы, вероятно, получить исключение в коде, прежде чем ваш код достигает Sendmail метод, так что ваш Sendmail метод никогда не вызывается, если у вас есть журнал, вы должны проверить то, что там происходит.

Кроме того, он, вероятно, работает на вашем login.aspx, потому что вы не получаете исключений, и ваш код завершает выполнение.

+0

Я не уверен, что понимаю вашу точку зрения. Он работает, потому что он работает? – Marc

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

  • Нет связанных вопросов^_^