Mailkit - не удается получить ожидаемые исключения с помощью SendAsync (vb.net) - PullRequest
0 голосов
/ 09 ноября 2018

Если я использую метод Send, я могу обработать любые исключения, как ожидалось.

Try
    'Synchronous method
    OutputStatus("Sending message, please wait")
    smtp.Send(mail)

Catch smtpEx As SmtpCommandException
    If smtpEx.ErrorCode = SmtpErrorCode.RecipientNotAccepted Then
        OutputStatus("Unable to send message to: " & smtpEx.Mailbox.Address)
    ElseIf smtpEx.ErrorCode = SmtpErrorCode.UnexpectedStatusCode Then
        OutputStatus("Unable to send message: " & smtpEx.Message)
    ....
    End If

Однако, если я использую метод SendAsync, я не получаю никаких исключений, и обработчик событий MessageSent не сработает (поэтому я застрял в цикле Do While). Если с сообщением все в порядке, обработчик событий работает правильно.

AddHandler smtp.MessageSent, AddressOf SMTPMessageSent
mbSendingMessage = True
Try
    smtp.SendAsync(mail)

    Do While mbSendingMessage
        Application.DoEvents()
    Loop

Catch ex As Exception
    OutputStatus("Error sending, see GWMailer.err")
End Try

 ....

Private Sub SMTPMessageSent(sender As Object, e As MailKit.MessageSentEventArgs)
    mbSendingMessage = False
End Sub

Любая помощь с благодарностью. Спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

Почему бы тебе просто не сделать это?

Await smtp.SendAsync(mail)

Для получения дополнительной информации о том, как работать с асинхронными API в VB.NET, ознакомьтесь с этой документацией: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/await-operator

...