На сервере крутится служба, которая согласно определенных событий отправляет почту. Столкнулся со следующей ошибкой:
[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);
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Заранее прошу прощения за тупой вопросНо допустим я работаю в одном классе, есть определенный цикл, в котором условием является переход в другой...