Я настроил и запустил сервер SmarterEmail, запустил службу SMTP для 25 портов, настроил учетную запись электронной почты.
Я создал простое приложение .NET для отправки электронной почты через мой почтовый сервер, это действительно просто:
public void SendEmail(EmailMessage message, string username, string password, string host, int port, bool enableSsl)
{
MailMessage mm = new MailMessage(message.From, message.To, message.Subject, message.Message);
NetworkCredential credentials = new NetworkCredential(username, password);
SmtpClient sc = new SmtpClient(host, 25);
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.UseDefaultCredentials = false;
sc.EnableSsl = enableSsl;
sc.Credentials = credentials;
sc.Send(mm);
}
Это приложение не удалось, исключение:
Необработанное исключение: System.Net.Mail.SmtpException: сбой отправки почты. ---> S
ystem.Net.WebException: невозможно подключиться к удаленному серверу ---> System.Net.S
ockets.SocketException: попытка подключения не удалась, потому что подключенная сторона
не отвечает должным образом по истечении определенного периода времени или не удалось установить соединение
d, потому что подключенный хост не смог ответить 173.248.182.102:25
в System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddre
ss socketAddress)
в System.Net.ServicePoint.ConnectSocketInternal (логическое connectFailure, Sock
et s4, Socket s6, Сокет и сокет, IP-адрес и адрес, состояние ConnectSocketState,
IAsyncResult asyncResult, Тайм-аут Int32, Исключение и исключение)
--- Конец внутренней трассировки стека исключений ---
в System.Net.ServicePoint.GetConnection (PooledStream PooledStream, объектная сеть
NER, логический асинхронный, IP-адрес и адрес, Socket и abortSocket, Socket & abortSocket
6, тайм-аут Int32)
в System.Net.PooledStream.Activate (Объект owningObject, логический асинхронный, Int32
тайм-аут, GeneralAsyncDelegate asyncCallback)
в System.Net.PooledStream.Activate (Объект owningObject, GeneralAsyncDelegate
AsyncCallback)
в System.Net.ConnectionPool.GetConnection (Объект owningObject, GeneralAsyncD
элегантный asyncCallback, Int32 creationTimeout)
в System.Net.Mail.SmtpConnection.GetConnection (ServicePoint servicePoint)
в System.Net.Mail.SmtpTransport.GetConnection (ServicePoint servicePoint)
в System.Net.Mail.SmtpClient.GetConnection ()
в System.Net.Mail.SmtpClient.Send (сообщение MailMessage)
--- Конец внутренней трассировки стека исключений ---
в System.Net.Mail.SmtpClient.Send (сообщение MailMessage)
на SendMail.MailService.SendEmail (сообщение EmailMessage, имя пользователя String, Stri
Пароль ng, хост String, порт Int32, Boolean enableSsl) в D: \ Development \ Proje
cts \ Experiment \ SendMail \ SendMail \ Program.cs: строка 36
в SendMail.Program.Main (String [] args) в D: \ Development \ Projects \ Experiment
s \ SendMail \ SendMail \ Program.cs: строка 52
Почтовый сервер: mail.trackyt.net, порт = 25, SSL = false. Он не работает с моей (локальной) машины.
В то же время, если я копирую это приложение на компьютер, на котором запущен SmarterEmail (удаленный), он успешно работает!
Я думал, что он заблокирован брандмауэром, включен 25 на удаленной машине - тот же результат.
Отключенный брандмауэр как локально, так и на удаленной машине - тот же результат.
Дополнительная диагностика:
Запустить SMTP-тест по http://pingability.com/smtptest.jsp:
EHLO pingability.com
250-MAST-WIN2K8R2-STD Привет [207.210.209.134]
250-РАЗМЕР 31457280
250-AUTH LOGIN CRAM-MD5
250 ОК
Отладка SMTP: Найдено расширение "РАЗМЕР", arg "31457280"
Отладка SMTP: найдено расширение "AUTH", arg "LOGIN CRAM-MD5"
Отладка SMTP: Найдено расширение "OK", arg ""
Отладка SMTP: попытка аутентификации
Отладка SMTP: проверить механизмы: LOGIN PLAIN DIGEST-MD5 NTLM
AUTH LOGIN
334 VXNlcm5hbWU6
c3VwcG9ydA ==
334 UGFzc3dvcmQ6
c3VwcG9ydDEyMw ==
235 Аутентификация прошла успешно
Там написано, что SMTP в порядке.
Telnet с моей машины:
Microsoft Telnet> o mail.trackyt.net 25
Соединение с mail.trackyt.net ... Не удалось открыть соединение с хостом по порту
25: Ошибка подключения
Тот же телнет с SmarterMail в порядке.
Есть идеи?