Не могу отправить почту с SmtpClient - PullRequest
4 голосов
/ 16 августа 2010

Не могу отправить почту. Вот мой C# источник:

  var to = "me@mycompany.com";
  var subject = "test";
  var body = "test mail";
  var message = new MailMessage(from, to, subject, body);
  var client = new SmtpClient { Credentials = new NetworkCredential("me@mycompany.com", "mypassword") };
  client.Send(message);

вот это App.config:

  <system.net>
    <mailSettings>
      <smtp from="me@mycompany.com">
        <network
          host="mail.mycompany.com"
          port="25"
          userName="me@mycompany.com"
          password="mypassword"
        />
      </smtp>
    </mailSettings>
  </system.net>

Пока что, если хост / порт в App.config не верны, выдается исключение, но не в том случае, если пользователь / пароль неверны (очевидные причины безопасности). Тем не менее, мне удалось войти в Microsoft Outlook с тем же пользователем / проходом, что и в исходном коде.

Письмо не получено ни в папке Inbox, ни в папке Junk. Как я могу проверить серверную часть (учитывая, что это часть microsoftonline.com)? Что мне не хватает? Что я делаю не так, пожалуйста?

Ответы [ 4 ]

2 голосов
/ 16 августа 2010

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

SendEmail () - создание и отправка сообщений электронной почты в C #

2 голосов
/ 16 августа 2010

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

1 голос
/ 17 марта 2015

У меня были проблемы с брандмауэром, когда я пытался использовать SMTP. Это обходной путь, если вы не хотите работать с ИТ и у вас установлен Outlook. Этот метод будет использовать вашу электронную почту по умолчанию для отправки. Вам также нужно будет добавить ссылку (я использую в COM «Библиотека объектов Microsoft Outlook 14.0»)

     using Outlook = Microsoft.Office.Interop.Outlook;

     private void sendEmail(string DistributionList, string AttachmentDestination)
      {
        //new outlook instance
        Outlook.Application app = new Outlook.Application();

        //new mail object
        Outlook.MailItem mail = app.CreateItem(Outlook.OlItemType.olMailItem);

        mail.Subject = "This is coming from a C# script";
        mail.To = DistributionList; //your distribution list "email@something.com"
        mail.Body = "This is the body of an email from a C# script";
        mail.Attachments.Add(AttachmentDestination); //location of attachment (can be ommitted)
        mail.Send();
        app.Quit();
    }
0 голосов
/ 17 августа 2010

Получил ответ от ИТ-команды - это была проблема конфигурации / безопасности.Решено с помощью ИТ.Всем большое спасибо.

...