public IActionResult RelayMessage(Guid id, [FromBody] MessageRelayOptions options) { var message = GetDbMessage(id); var relayResult = server.TryRelayMessage(message, options?.OverrideRecipientAddresses?.Length > 0 ? options?.OverrideRecipientAddresses.Select(a => MailboxAddress.Parse(a)).ToArray() : null); if (relayResult.Exceptions.Any()) { var relayErrorSummary = string.Join(". ", relayResult.Exceptions.Select(e => e.Key.Address + ": " + e.Value.Message)); return(Problem("Failed to relay to recipients: " + relayErrorSummary)); } if (relayResult.WasRelayed) { foreach (var relay in relayResult.RelayRecipients) { message.AddRelay(new MessageRelay { SendDate = relay.RelayDate, To = relay.Email }); } messagesRepository.DbContext.SaveChanges(); } return(Ok()); }
public IActionResult RelayMessage(Guid id, [FromBody] MessageRelayOptions options) { Message message = GetDbMessage(id); Dictionary <MailboxAddress, Exception> relayErrors = server.TryRelayMessage(message, options?.OverrideRecipientAddresses?.Length > 0 ? options?.OverrideRecipientAddresses.Select(a => MailboxAddress.Parse(a)).ToArray() : null); if (relayErrors.Any()) { string relayErrorSummary = string.Join(". ", relayErrors.Select(e => e.Key.Address + ": " + e.Value.Message)); return(Problem("Failed to relay to recipients: " + relayErrorSummary)); } return(Ok()); }