private BeginSend ( System.Net.Mime.BaseWriter writer, bool sendEnvelope, bool allowUnicode, AsyncCallback callback, object state ) : IAsyncResult | ||
writer | System.Net.Mime.BaseWriter | |
sendEnvelope | bool | |
allowUnicode | bool | |
callback | AsyncCallback | |
state | object | |
Результат | IAsyncResult |
void SendMailCallback(IAsyncResult result) { GlobalLog.Enter("SmtpClient#" + ValidationHelper.HashString(this) + "::SendMailCallback"); 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); GlobalLog.Leave("SmtpClient#" + ValidationHelper.HashString(this) + "::SendMailCallback"); 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); } GlobalLog.Leave("SmtpClient#" + ValidationHelper.HashString(this) + "::SendMailCallback"); }
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, IsUnicodeSupported(), new AsyncCallback(SendMessageCallback), result.AsyncState); } } catch (Exception e) { Complete(e, result); } finally { if (NetEventSource.IsEnabled) { NetEventSource.Exit(this); } } }