/// <summary> /// The main gateway for outgoing messages /// </summary> /// <param name="toAddress">Where to send</param> /// <param name="text">What to send</param> /// <returns>Copy of the sent message</returns> public Message Send(string toAddress, string text) { var resultMessage = QueueMessage(new Message { // Convert newlines to tags of newlines Text = text.Replace(Environment.NewLine, GetTag(Tags.Newline)), From = Settings.Instance.PublicKey, To = toAddress, Sent = DateTime.Now, Received = DateTime.MinValue }); var contactForHistory = Contacts.FirstOrDefault(p => p.ID == resultMessage.Address); var contactForAuthor = Contacts.FirstOrDefault(p => p.ID == resultMessage.From); if (contactForHistory != null && contactForAuthor != null) { historyStorage.Add(contactForHistory.Name, contactForAuthor.Name, resultMessage); } // Provide a copy for external use return(resultMessage); }