/// <summary> /// Sends a message using the messengers of the chain. /// </summary> /// <returns>An list containing the errors generated on send /// operation.</returns> /// <remarks> /// This method does not check the message validity. It is the /// responsability of the messenger to validate the message and, if is the /// case, does not send it. /// </remarks> IList<ResponseMessage> Send(IMessage message) { List<ResponseMessage> errors = new List<ResponseMessage>(); foreach (IMessenger messenger in messengers_) { // the try/catch block is used here to ensure that the message // is delivered to all messengers. try { IMessage response = messenger.Send(message); OnProcessResponse(messenger, response); } catch (Exception exception) { ResponseMessage error = new ResponseMessage(exception.Message, ResponseMessageType.ErrorMessage); errors.Add(error); } } return errors; }
/// <summary> /// Validate the message parameters. /// </summary> /// <param name="message">The message to validate.</param> /// <param name="error_message">An <see cref="ResponseMessage"/> that /// contains description of the error that cause the validation error. /// </param> /// <returns>true if the message is valid; otherwise false.</returns> protected bool ValidateMessage(IMessage message, out ResponseMessage error_message) { if (message.Sender == null) { error_message = new ResponseMessage( Resources.Messaging_smtperr_NoSender, ResponseMessageType.ErrorMessage); return false; } else if (message.Sender.Address == null) { error_message = new ResponseMessage( Resources.Messaging_smtperr_NoSenderAddress, ResponseMessageType.ErrorMessage); return false; } else if (message.Recipients == null || message.Recipients.Length == 0) { error_message = new ResponseMessage( Resources.Messaging_smtperr_NoRecipients, ResponseMessageType.ErrorMessage); return false; } error_message = null; return true; }