Может быть, брандмауэр или что-то в этом роде. Я считаю, что лучший способ попробовать это - просто подключиться к серверу вручную.
Просто откройте командную строку и напишите:
telnet your.mail.server 25
Обычно это дает ответ, аналогичный «220 your.mail.server ESMTP».
Если вы используете Vista или Win7, вам, возможно, придется сначала включить встроенный клиент Telnet (перейдите в «Программы и компоненты», выберите «Включить или выключить функции Windows» и просто выберите клиент Telnet)
Это ваш порт ... Gmail требует порт 587.
Если это не сработает, я могу просто дать вам свой класс электронной почты.
РЕДАКТИРОВАТЬ:
private static void SendEmailMessageGmail(System.Net.Mail.MailMessage message)
{
message.IsBodyHtml = true;
message.BodyEncoding = Encoding.UTF8;
System.Net.NetworkCredential cred = new System.Net.NetworkCredential(EmailUsername, EmailPassword);
SmtpClient smtp = new SmtpClient("smtp.gmail.com");
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = true;
smtp.Credentials = cred;
smtp.Port = 587;
smtp.Send(message);
}
РЕДАКТИРОВАТЬ: Добавьте это в свой код: email_client.UseDefaultCredentials = false;
Не уверен, что это будет полезно, но вы проверили, что ваш IP-адрес не блокирует отправку электронных писем с вашего IP?? Когда-то у меня была похожая проблема, я закончил тем, что выдергивал волосы все выходные за нее.
Таким образом, стоит проверить, чтобы устранить это. Удачи.
Попробуйте ввести полный адрес электронной почты в NetworkCredential username
Поскольку вы ссылаетесь на System.Web, я предполагаю, что это веб-приложение, хотя я не совсем понял это из вашего описания. Если это действительно веб-приложение, убедитесь, что в вашем файле web.config есть следующая запись:
<system.net>
<mailSettings>
<smtp>
<network host="smtp.gmail.com" port="465" userName="<UID>" password="<PW>"/>
</smtp>
</mailSettings>
</system.net>
Это предотвратит необходимость указывать эту информацию в классе email_log_files