System.Net.Mail.SmtpClient.SendMailCallback C# (CSharp) Method

SendMailCallback() private method

private SendMailCallback ( IAsyncResult result ) : void
result IAsyncResult
return void
        private void SendMailCallback(IAsyncResult result)
        {
            if (NetEventSource.IsEnabled) NetEventSource.Enter(this);
            try
            {
                _writer = _transport.EndSendMail(result);
                // If some recipients failed but not others, send the e-mail anyways, but then return the
                // "Non-fatal" exception reporting the failures.  The sync code path does it this way.
                // Fatal exceptions would have thrown above at transport.EndSendMail(...)
                SendMailAsyncResult sendResult = (SendMailAsyncResult)result;
                // Save these and throw them later in SendMessageCallback, after the message has sent.
                _failedRecipientException = sendResult.GetFailedRecipientException();
            }
            catch (Exception e)
            {
                Complete(e, result);
                if (NetEventSource.IsEnabled) NetEventSource.Exit(this);
                return;
            }

            try
            {
                if (_cancelled)
                {
                    Complete(null, result);
                }
                else
                {
                    _message.BeginSend(_writer, DeliveryMethod != SmtpDeliveryMethod.Network,
                        ServerSupportsEai, new AsyncCallback(SendMessageCallback), result.AsyncState);
                }
            }
            catch (Exception e)
            {
                Complete(e, result);
            }
            finally
            {
                if (NetEventSource.IsEnabled) NetEventSource.Exit(this);
            }
        }