Ошибка во время первой отправки почты C#

180
15 сентября 2017, 18:21

На сервере крутится служба, которая согласно определенных событий отправляет почту. Столкнулся со следующей ошибкой:

[14.09.2017 15:10:00.971] [System.Net.Mail.SmtpClient.Send()] System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.DelegatedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.BufferedReadStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
   at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)
   at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpClient.GetConnection()
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   --- End of inner exception stack trace ---
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at WindowsServiceWeather.Email.sendEmail(String mess, String theme)   

Сделал имитацию отправки на кнопку, на моем ПК работает нормально, на сервере, при первом нажатии вылазит описанная ошибка, при втором отправляет и последующие нажатия тоже нормально отправляет. Заметил что через какое-то время без действия на сервере, не смотря на RDP, если нажать снова вылезет та же ошибка и снова же, последующие нажатия, будут все таки отправлять письма. Вот код:

        IniFile INI = new IniFile();
        string fromEmailUser = INI.ReadINI("EmailSetting", "fromEmailUser");
        string emails = INI.ReadINI("EmailSetting", "emails");
        string smtpString = INI.ReadINI("EmailSetting", "smtpString");
        int smtpPort = int.Parse(INI.ReadINI("EmailSetting", "smtpPort"));
        string mailUser = INI.ReadINI("EmailSetting", "mailUser");
        string mailUserPassword = INI.ReadINI("EmailSetting", "mailUserPassword");
        // отправитель - устанавливаем адрес и отображаемое в письме имя
        MailAddress from = new MailAddress(fromEmailUser, "Скрипт погоды");
            // создаем объект сообщения
        using (MailMessage m = new MailMessage())
        {
            m.From = from;
            string[] adrs = emails.Split(';');
            foreach (string adr in adrs)
            {
                m.To.Add(adr);
            }
            // тема письма
            m.Subject = theme;
            // текст письма
            m.Body = mess;
            // письмо представляет код html
            m.IsBodyHtml = true;
            // адрес smtp-сервера и порт, с которого будем отправлять письмо
            SmtpClient smtp = new SmtpClient(smtpString, smtpPort);
            // логин и пароль
            smtp.Credentials = new NetworkCredential(mailUser, mailUserPassword);
            smtp.EnableSsl = true;
            smtp.Send(m);
READ ALSO
c# Как перейти в другой класс

c# Как перейти в другой класс

Заранее прошу прощения за тупой вопросНо допустим я работаю в одном классе, есть определенный цикл, в котором условием является переход в другой...

221
Префикс перед string: '$'

Префикс перед string: '$'

Прошерстил весь свой справочник по C# и не смог найти что такое '$'

207
Массив в C#, код вместо индекса

Массив в C#, код вместо индекса

В php есть нечто такое:

212