Как из сообщения исключений (неполный) и кода, это очень трудно сказать, что пошло не так в вашем случае. Отказ отправки почты вызывается, когда сервер не найден, порт не может быть подключен. Это означает, что связь до сих пор не установлена.
Сообщение об исключении, которое возникает при установлении соединения, но проверка подлинности была выполнена неправильно: «Для SMTP-сервера требуется аутентифицированное соединение ...». Я предлагаю вам проверить сервер PORT, SMTP-сервера (не добавляйте http://
), а затем повторите попытку. Для SMTP-соединения (в большинстве случаев) требуется
- SMTP-сервер:
smtp.gmail.com
достаточно!
- ПОРТ для подключения: я всегда использовал порт TCP по умолчанию для SMTP, 25. Он работает.
- EnableSsl: большинство требует его. Я предлагаю вам всегда использовать его.
client.EnableSsl = true;
- Учетные данные обязательны для всех: ни один сервер не может отправлять боты, отправляющие электронные письма. В этом случае, если вы создадите новую учетную запись. Вы можете столкнуться с проблемой отправки электронной почты программным способом, я столкнулся с проблемой с новой учетной записью, не отправляющей электронные письма, тогда как старая учетная запись (моя учетная запись по умолчанию) отправляла электронное письмо без каких-либо проблем.
Следующий шаблон кода (если он заполнен точными параметрами) обязательно отправит электронное письмо, потому что я проверил и проверил его в течение нескольких секунд. :)
// You should use a using statement
using (SmtpClient client = new SmtpClient("<smtp-server-address>", 25))
{
// Configure the client
client.EnableSsl = true;
client.Credentials = new NetworkCredential("<username>", "<password>");
// client.UseDefaultCredentials = true;
// A client has been created, now you need to create a MailMessage object
MailMessage message = new MailMessage(
"[email protected]", // From field
"[email protected]", // Recipient field
"Hello", // Subject of the email message
"World!" // Email message body
);
// Send the message
client.Send(message);
/*
* Since I was using Console app, that is why I am able to use the Console
* object, your framework would have different ones.
* There is actually no need for these following lines, you can ignore them
* if you want to. SMTP protocol would still send the email of yours. */
// Print a notification message
Console.WriteLine("Email has been sent.");
// Just for the sake of pausing the application
Console.Read();
}
Отправка сообщения может быть головной болью иногда, потому что для этого требуется некоторое базовое понимание сетевого взаимодействия. Я написал статью, которая охватывает отправку писем в .NET framework и несколько проблем, которые обычно натыкаются на новичков. Возможно, вам также интересно прочитать эту статью. http://www.codeproject.com/Articles/873250/Sending-emails-over-NET-framework-and-general-prob
Посмотрите на [Как использовать gmail SMTP в форме ASP.NET] (http://stackoverflow.com/questions/7982810/how-to-use-gmail-smtp-in-asp-net- form/7982891 # 7982891) –