SMTP.Send () возвращает после (или во время) сеанса отправки электронной почты? - PullRequest
1 голос
/ 09 мая 2011

Кажется, что этот код vb.net работает ТОЛЬКО , если выполняется ... и я держу программу открытой еще 5-10 секунд ПОСЛЕ того, как я вижу сообщение "отправлено по электронной почте" Если я вместо этого подожду 0-1 с, а затем закрою prg, электронная почта не отправится.

Возвращает ли SMTP.Send () ПОСЛЕ того, как электронное письмо полностью отправлено ... или только когда оно НАЧИНАЕТСЯ выходить? (Иногда тело письма и / или вложение файла могут иметь длину 10 КБ и занять некоторое время.)


Dim myMailMessage As New Net.Mail.MailMessage()
myMailMessage.From = New Net.Mail.MailAddress(fromEmail)
myMailMessage.To.Add(toEmail)
myMailMessage.Subject = strSubject
myMailMessage.Body = strBody
myMailMessage.IsBodyHtml = True

Dim SMTP As New Net.Mail.SmtpClient("smtp.gmail.com")
SMTP.Port = 587
SMTP.EnableSsl = True
SMTP.Credentials = New System.Net.NetworkCredential(fromEmail, password)
SMTP.Send(myMailMessage)
call MsgBox("Email is completely done sending")

1 Ответ

1 голос
/ 09 мая 2011

http://msdn.microsoft.com/en-us/library/swas0fwc.aspx

Это не асинхронный вызов, поэтому он возвращается только после отправки электронного письма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...