private static void SendToCollectionCompleted(IAsyncResult result) { if (!result.CompletedSynchronously) { SendMailAsyncResult thisPtr = (SendMailAsyncResult)result.AsyncState !; try { string response; if (!RecipientCommand.EndSend(result, out response)) { thisPtr._failedRecipientExceptions.Add( new SmtpFailedRecipientException(thisPtr._connection.Reader !.StatusCode, thisPtr._toCollection[thisPtr._toIndex - 1].GetSmtpAddress(thisPtr._allowUnicode), response)); if (thisPtr._failedRecipientExceptions.Count == thisPtr._toCollection.Count) { SmtpFailedRecipientException exception = thisPtr._toCollection.Count == 1 ? (SmtpFailedRecipientException)thisPtr._failedRecipientExceptions[0] : new SmtpFailedRecipientsException(thisPtr._failedRecipientExceptions, true); exception.fatal = true; thisPtr.InvokeCallback(exception); return; } } thisPtr.SendToCollection(); } catch (Exception e) { thisPtr.InvokeCallback(e); } } }
private bool SendToCollection() { while (this.toIndex < this.toCollection.Count) { string str; MultiAsyncResult result = (MultiAsyncResult)RecipientCommand.BeginSend(this.connection, this.toCollection[this.toIndex++].SmtpAddress + this.deliveryNotify, sendToCollectionCompleted, this); if (!result.CompletedSynchronously) { return(false); } if (!RecipientCommand.EndSend(result, out str)) { this.failedRecipientExceptions.Add(new SmtpFailedRecipientException(this.connection.Reader.StatusCode, this.toCollection[this.toIndex - 1].SmtpAddress, str)); } } return(true); }
private void SendToCollection() { while (_toIndex < _toCollection.Count) { MultiAsyncResult result = (MultiAsyncResult)RecipientCommand.BeginSend(_connection, _toCollection[_toIndex++].GetSmtpAddress(_allowUnicode) + _deliveryNotify, s_sendToCollectionCompleted, this); if (!result.CompletedSynchronously) { return; } string response; if (!RecipientCommand.EndSend(result, out response)) { _failedRecipientExceptions.Add(new SmtpFailedRecipientException(_connection.Reader.StatusCode, _toCollection[_toIndex - 1].GetSmtpAddress(_allowUnicode), response)); } } SendData(); }
private void SendTo() { if (this.to != null) { IAsyncResult result = RecipientCommand.BeginSend(this.connection, (this.deliveryNotify != null) ? (this.to + this.deliveryNotify) : this.to, sendToCompleted, this); if (result.CompletedSynchronously) { string str; if (!RecipientCommand.EndSend(result, out str)) { throw new SmtpFailedRecipientException(this.connection.Reader.StatusCode, this.to, str); } this.SendData(); } } else if (this.SendToCollection()) { this.SendData(); } }
private static void SendToCollectionCompleted(IAsyncResult result) { if (!result.CompletedSynchronously) { SendMailAsyncResult asyncState = (SendMailAsyncResult)result.AsyncState; try { string str; if (!RecipientCommand.EndSend(result, out str)) { asyncState.failedRecipientExceptions.Add(new SmtpFailedRecipientException(asyncState.connection.Reader.StatusCode, asyncState.toCollection[asyncState.toIndex - 1].SmtpAddress, str)); if (asyncState.failedRecipientExceptions.Count == asyncState.toCollection.Count) { SmtpFailedRecipientException exception = null; if (asyncState.toCollection.Count == 1) { exception = (SmtpFailedRecipientException)asyncState.failedRecipientExceptions[0]; } else { exception = new SmtpFailedRecipientsException(asyncState.failedRecipientExceptions, true); } exception.fatal = true; asyncState.InvokeCallback(exception); return; } } if (asyncState.SendToCollection()) { asyncState.SendData(); } } catch (Exception exception2) { asyncState.InvokeCallback(exception2); } } }
private static void SendToCompleted(IAsyncResult result) { if (!result.CompletedSynchronously) { SendMailAsyncResult asyncState = (SendMailAsyncResult)result.AsyncState; try { string str; if (RecipientCommand.EndSend(result, out str)) { asyncState.SendData(); } else { asyncState.InvokeCallback(new SmtpFailedRecipientException(asyncState.connection.Reader.StatusCode, asyncState.to, str)); } } catch (Exception exception) { asyncState.InvokeCallback(exception); } } }