private void SendMessageReceipts() { if (ViewModels.SettingsPageViewModel.PacketSettingsPartViewModel.SendReceivedReceipt) { // do not send received receipt for receive receipt messages foreach (PacketMessage pktMsg in _packetMessagesReceived) { if (pktMsg.Area.Length > 0) // Do not send receipt for bulletins { continue; } try { // Find the Subject line string[] msgLines = pktMsg.MessageBody.Split(new string[] { "\r\n" }, StringSplitOptions.None); for (int i = 0; i < Math.Min(msgLines.Length, 10); i++) { if (msgLines[i].StartsWith("Date:")) { pktMsg.JNOSDate = DateTime.Parse(msgLines[i].Substring(10, 21)); pktMsg.JNOSDateDisplay = $"{pktMsg.JNOSDate.Month:d2}/{pktMsg.JNOSDate.Date:d2}/{pktMsg.JNOSDate.Year - 2000:d2} {pktMsg.JNOSDate.Hour:d2}:{pktMsg.JNOSDate.Minute:d2}"; } else if (msgLines[i].StartsWith("From:")) { pktMsg.MessageFrom = msgLines[i].Substring(6); } else if (msgLines[i].StartsWith("To:")) { pktMsg.MessageTo = msgLines[i].Substring(4); } else if (msgLines[i].StartsWith("Subject:")) { if (msgLines[i].Length > 10) { pktMsg.Subject = msgLines[i].Substring(9); } break; } } if (!pktMsg.Subject.Contains("DELIVERED:") && pktMsg.Area.Length == 0) { PacketMessage receiptMessage = new PacketMessage() { PacFormName = "SimpleMessage", MessageNumber = ViewModels.SettingsPageViewModel.GetMessageNumberPacket(), BBSName = _messageBBS, TNCName = _tncDevice.Name, MessageTo = pktMsg.MessageFrom, MessageFrom = ViewModels.SettingsPageViewModel.IdentityPartViewModel.UseTacticalCallsign ? ViewModels.SettingsPageViewModel.IdentityPartViewModel.TacticalCallsign : ViewModels.SettingsPageViewModel.IdentityPartViewModel.UserCallsign, Subject = $"DELIVERED: {pktMsg.Subject}" }; FormField[] formFields = new FormField[1]; FormField formField = new FormField() { ControlName = "messageBody", ControlContent = $"!LMI!{pktMsg.MessageNumber}!DR!{pktMsg.ReceivedTime?.ToString("G")}\r\n" }; formField.ControlContent += "Your Message\r\n"; formField.ControlContent += $"To: {pktMsg.MessageTo}\r\n"; formField.ControlContent += $"Subject: {pktMsg.Subject}\r\n"; //formField.ControlContent += $"was delivered on {pktMsg.MessageReceiveTime.ToShortDateString()} {pktMsg.MessageReceiveTime.ToShortTimeString()}\r\n"; formField.ControlContent += $"was delivered on {pktMsg.ReceivedTime?.ToString("G")}\r\n"; formField.ControlContent += $"Recipient's Local Message ID: {pktMsg.MessageNumber}\r\n"; formFields[0] = formField; receiptMessage.FormFieldArray = formFields; MessageControl packetForm = new MessageControl(); receiptMessage.MessageBody = packetForm.CreateOutpostData(ref receiptMessage); receiptMessage.CreateFileName(); DateTime dateTime = DateTime.Now; receiptMessage.SentTime = dateTime; receiptMessage.SentTimeDisplay = $"{dateTime.Month:d2}/{dateTime.Day:d2}/{dateTime.Year - 2000:d2} {dateTime.Hour:d2}:{dateTime.Minute:d2}"; receiptMessage.MessageSize = receiptMessage.Size; log.Info(receiptMessage.MessageBody); // Disable if not testing //SendMessage(ref receiptMessage); // Disabled for testing _packetMessagesSent.Add(receiptMessage); } } catch (Exception e) { log.Error("Delivered message exception: ", e); _error = true; } } } }