Пытаюсь отправить письмо на электронную почту (код взят из документации Microsoft), но операция отменяется и сообщение на почту не приходит. Помогите решить проблему.
static bool mailSent = false;
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
String token = (string)e.UserState;
if (e.Cancelled)
{
Console.WriteLine("[{0}] Send canceled.", token);
}
if (e.Error != null)
{
Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
}
else
{
Console.WriteLine("Message sent.");
}
mailSent = true;
}
public static void SendMessage()
{
SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com";
client.Port = 465;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential(mailFrom, password);
MailAddress from = new MailAddress(mailFrom,"saturn",System.Text.Encoding.UTF8);
MailAddress to = new MailAddress(mailTo);
MailMessage message = new MailMessage(from, to);
message.Body = "This is a test e-mail message sent by an application. ";
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = "test message 1";
message.SubjectEncoding = System.Text.Encoding.UTF8;
client.SendCompleted += new
SendCompletedEventHandler(SendCompletedCallback);
string userState = "test message1";
client.SendAsync(message, userState);
if (mailSent == false)
{
client.SendAsyncCancel();
}
message.Dispose();
}
Вы, конечно, взяли код у Microsoft-а, но выкинули ключевую строчку между client.SendAsync
и проверкой:
string answer = Console.ReadLine();
И, соответственно, упростили проверку. Но код-то, вызвав client.SendAsync
, ничего не ждет, а продолжает идти дальше и попадает в Ваш if
, так как к этому моменту обработчик SendCompletedCallback
еще не выполнился.
await client.SendMailAsync(message);
Можно сделать синхронный вызов
client.Send(message, userState);
Или сделать асинхронно
await client.SendAsync(message, userState);
При этом незабываем добавить async
в определение функции
public static async void SendMessage()
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я хочу выучить язык С# но должен ли я читать книги которые по С# 60(моя версия С# в которой я и хочу кодить ) или же могу прочитать C# 4
Создаю веб сервер на который будут отправляться post запросы от других серверов, создал контроллер