public override byte[] ToBytes()
        {
            var versionBytes   = BitConverter.GetBytes(Version);
            var servicesBytes  = BitConverter.GetBytes(Services);
            var timeStampBytes = BitConverter.GetBytes(TimeStamp.Ticks);

            // We leave out the IPAddress TimeStamp in the Version Message.
            var addressToBytes   = AddressTo.ToBytes().Skip(4).ToArray();
            var addressFromBytes = AddressFrom.ToBytes().Skip(4).ToArray();

            var nonceBytes       = BitConverter.GetBytes(Nonce);
            var userAgentBytes   = UserAgent.ToBytes();
            var startHeightBytes = BitConverter.GetBytes(StartHeight);
            var relayBytes       = BitConverter.GetBytes(Relay);

            return(versionBytes
                   .Concat(servicesBytes)
                   .Concat(timeStampBytes)
                   .Concat(addressToBytes)
                   .Concat(addressFromBytes)
                   .Concat(nonceBytes)
                   .Concat(userAgentBytes)
                   .Concat(startHeightBytes)
                   .Concat(relayBytes)
                   .ToArray());
        }
Beispiel #2
0
        private void SendEmail()
        {
            var message = new MailMessage
            {
                BodyEncoding    = Encoding.UTF8,
                SubjectEncoding = Encoding.UTF8
            };

            var addFDisplay = AddressFromDisplay?.Trim();

            message.From = string.IsNullOrEmpty(addFDisplay) ?
                           new MailAddress(AddressFrom?.Trim()) :
                           new MailAddress(AddressFrom?.Trim(), addFDisplay);

            AddressBcc = AddressBcc?.Replace(",", ";").Replace("|", ";");
            AddressCc  = AddressCc?.Replace(",", ";").Replace("|", ";");
            AddressTo  = AddressTo?.Replace(",", ";").Replace("|", ";");

            AddressBcc.SplitAndTrim(';').Each(a => { if (!string.IsNullOrEmpty(a))
                                                     {
                                                         message.Bcc.Add(new MailAddress(a));
                                                     }
                                              });
            AddressCc.SplitAndTrim(';').Each(a => { if (!string.IsNullOrEmpty(a))
                                                    {
                                                        message.CC.Add(new MailAddress(a));
                                                    }
                                             });
            AddressTo.SplitAndTrim(';').Each(a => { if (!string.IsNullOrEmpty(a))
                                                    {
                                                        message.To.Add(new MailAddress(a));
                                                    }
                                             });

            var msg = string.Empty;

            lock (_buffer)
            {
                var first = _buffer.First();
                message.Subject = _buffer.Count == 1 ?
                                  string.Format("{0} {1} {2}: {3}", first.Timestamp.ToString("dd/MM/yyyy HH:mm:ss"), first.MachineName, first.ApplicationName, first.Message) :
                                  string.Format("{0} {1} {2}: Messages", first.Timestamp.ToString("dd/MM/yyyy HH:mm:ss"), first.MachineName, first.ApplicationName);
                foreach (var innerItem in _buffer)
                {
                    msg += string.Format("{0}\r\nMachine Name: {1} [{2}]\r\nAplicationName: {3}\r\nMessage: {4}", innerItem.Timestamp.ToString("dd/MM/yyyy HH:mm:ss"), innerItem.MachineName, innerItem.EnvironmentName, innerItem.ApplicationName, innerItem.Message);
                    if (innerItem.Exception != null)
                    {
                        if (!string.IsNullOrEmpty(innerItem.Exception.ExceptionType))
                        {
                            msg += "\r\nException: " + innerItem.Exception.ExceptionType;
                        }
                        if (!string.IsNullOrEmpty(innerItem.Exception.StackTrace))
                        {
                            msg += "\r\nStack Trace: " + innerItem.Exception.StackTrace;
                        }
                    }
                    if (innerItem != _buffer.Last())
                    {
                        msg += "\r\n-------------------------------\r\n";
                    }
                }
                _buffer.Clear();
            }
            message.Body = msg;

            if (_smtp == null)
            {
                return;
            }
            try
            {
                _smtp.Send(message);
            }
            catch (Exception e)
            {
                Core.Log.Error("SMTPERROR: {0}", e.Message);
            }
            finally
            {
                _waiting = false;
            }
        }