Отправка почты из gmail SMTP С# Время ожидания подключения
Я пытаюсь отправить электронное письмо через С# из учетной записи gmail для регистрации учетной записи для моего сайта.
Я пробовал несколько способов, однако такое же исключение продолжает всплывать: System.Net.Mail.Smtp Exception - время ожидания подключения.
Это то, что я включил в свой файл Web.config:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network"
from="Writely <[email protected]>">
<network host="smtp.gmail.com"
port="465"
enableSsl="true"
defaultCredentials="false"
userName="[email protected]"
password="******" />
</smtp>
</mailSettings>
</system.net>
где writely - это имя моего сайта, а [email protected] - это учетная запись, с которой я хочу отправить электронное письмо.
Затем в моем контроллере учетных записей, когда я подключаюсь к моей базе данных и сохраняю пользователя в своей таблице, я создаю свой объект MailMessage и пытаюсь сделать то же самое по электронной почте:
using (DBConnection conn = new DBConnection())
{
conn.UserInfoes.Add(userInfo);
conn.SaveChanges();
MailMessage mail = new MailMessage();
mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected]");
mail.Subject = "Welcome to Writely";
mail.Body = "Test content";
SmtpClient smtp = new SmtpClient();
smtp.Send(mail);
}
Я что-то упустил или что-то сделал не так? Я читал, что это хороший способ сделать это в другом вопросе о переполнении стека, поэтому я действительно не знаю, в чем проблема.
Спасибо за вашу помощь:)
Ответы
Ответ 1
Вы должны сообщить SmtpClient, какие настройки использовать. Он не автоматически считывает эту информацию из файла Web.Config.
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 465);
smtp.Credentials = new NetworkCredential("[email protected]", "***");
smtp.EnableSsl = true;
smtp.Send(mail);
Ответ 2
gmail требует аутентификации:
Outgoing Mail (SMTP) Server
requires TLS or SSL: smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465
так что я сделал
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("[email protected]", "mypwd"),
EnableSsl = true
};
client.Send("[email protected]", "[email protected]", "Welcome to Writely", "Test content");
Ответ 3
У меня была такая же проблема, и она была решена после переключения номера порта с 465 до 587.
У меня возникла проблема с "подтверждением электронной почты", "восстановлением пароля" и "отправкой электронной почты", и теперь все 3 проблемы решены:).
Я знаю, что это довольно старый пост, но я обычно использую существующие сообщения для поиска ответов вместо того, чтобы задавать новые вопросы.
Спасибо всем за помощь.
Ответ 4
Как я уже ответил здесь.
Эта проблема также может быть вызвана конфигурацией безопасности в вашей учетной записи gmail.
Правильный порт - 587, но для аутентификации вам необходимо разрешить доступ из менее безопасных приложений в вашу учетную запись gmail.
Попробуйте здесь
Это сработало для меня, надеюсь, что это поможет.
Ответ 5
Пример в веб-формах/sharepoint asp.net
StringBuilder Body = new StringBuilder();
Body.Append("Your text");
String FromEmail = "you email";
String DisplayNameFromEmailMedico = "display when you receive email";
MailMessage message = new MailMessage();
message.From = new MailAddress(FromEmail, DisplayNameFromEmailMedico);
message.To.Add(new MailAddress("[email protected]"));
message.Subject = "subject that print in email";
message.IsBodyHtml = true;
message.Body = Body.ToString();
SmtpClient client = new SmtpClient();
NetworkCredential myCreds = new NetworkCredential("[email protected]", "key from email smtp", "");
client.EnableSsl = true;
client.Credentials = myCreds;
client.Send(message);