public void AddEMail(eMail mail) { MongoDatabase mongoDatabase = this._mongoServer.GetDatabase("email_user_" + this._id); MongoCollection <eMailEntity> mongoCollection = mongoDatabase.GetCollection <eMailEntity>("mails"); eMailAddress headerFrom = new eMailAddress(this.Username, this.eMail); mail.SetReplyTo(this.Username, this.eMail); eMailEntity mailEntity = new eMailEntity { Time = mail.Time, MailFrom = mail.MailFrom, HeaderReplyTo = mail.HeaderReplyTo, Subject = mail.Subject, RecipientTo = mail.RecipientTo, ClientName = "eMailServer.NET", Message = mail.Message, HeaderFrom = headerFrom, RawHeader = mail.RawHeader }; WriteConcernResult result = mongoCollection.Insert(mailEntity, WriteConcern.Acknowledged); logger.Info("WriteConcernResult: " + result.Ok); }
public void SetHeaderFrom(eMailAddress headerFrom) { this._headerFrom = headerFrom; }
public void AddEMail(eMail mail) { MongoDatabase mongoDatabase = this._mongoServer.GetDatabase("email_user_" + this._id); MongoCollection<eMailEntity> mongoCollection = mongoDatabase.GetCollection<eMailEntity>("mails"); eMailAddress headerFrom = new eMailAddress(this.Username, this.eMail); mail.SetReplyTo(this.Username, this.eMail); eMailEntity mailEntity = new eMailEntity { Time = mail.Time, MailFrom = mail.MailFrom, HeaderReplyTo = mail.HeaderReplyTo, Subject = mail.Subject, RecipientTo = mail.RecipientTo, ClientName = "eMailServer.NET", Message = mail.Message, HeaderFrom = headerFrom, RawHeader = mail.RawHeader }; WriteConcernResult result = mongoCollection.Insert(mailEntity, WriteConcern.Acknowledged); logger.Info("WriteConcernResult: " + result.Ok); }
public void SetReplyTo(eMailAddress mailAddress) { this._headerReplyTo = mailAddress; }
public void SetReplyTo(string name, string address) { this._headerReplyTo = new eMailAddress(name, address); }
public void ParseData(string data) { bool header = true; this._rawHeader = new List<KeyValuePair<string, string>>(); List<string> messageLines = new List<string>(); string[] lines = data.Split('\n'); KeyValuePair<string, string> lastHeader = new KeyValuePair<string, string>("", ""); foreach(string line in lines) { string trimmedLine = line.Trim(); if (header && trimmedLine == String.Empty) { header = false; if (lastHeader.Key != String.Empty) { this._rawHeader.Add(lastHeader); lastHeader = new KeyValuePair<string, string>("", ""); } continue; } if (header) { KeyValuePair<string, string> currentHeader = this.ParseHeaderLine(trimmedLine); if (currentHeader.Key == String.Empty && currentHeader.Value != String.Empty) { if (lastHeader.Key != String.Empty) { lastHeader = new KeyValuePair<string, string>(lastHeader.Key, lastHeader.Value + "\r\n" + currentHeader.Value); } } else if (currentHeader.Key != String.Empty) { if (lastHeader.Key != String.Empty) { this._rawHeader.Add(lastHeader); } lastHeader = currentHeader; } } else { if (trimmedLine == "..") { trimmedLine = "."; } messageLines.Add(trimmedLine); } } foreach(KeyValuePair<string, string> currentHeader in this._rawHeader) { switch(currentHeader.Key.ToUpper()) { case "CC": string[] headerCcs = currentHeader.Value.Split('\n'); foreach(string headerCc in headerCcs) { eMailAddress nameAndAddressCc = this.ParseEMailNameAndAddress(headerCc); if (nameAndAddressCc != null) { this._headerCc.Add(nameAndAddressCc); } } break; case "DATE": try { string timezoneCleanedDate = Regex.Replace(currentHeader.Value.Trim(), @"\s+\((CEST|GMT|UTC)\)$", "", RegexOptions.Compiled); this._headerDate = DateTime.Parse(timezoneCleanedDate); } catch(Exception e) { logger.ErrorException("error while parsing the eMail header date: " + currentHeader.Value.Trim(), e); } break; case "FROM": eMailAddress nameAndAddressFrom = this.ParseEMailNameAndAddress(currentHeader.Value); if (nameAndAddressFrom != null) { this._headerFrom = nameAndAddressFrom; } break; case "REPLY-TO": eMailAddress nameAndAddressReplyTo = this.ParseEMailNameAndAddress(currentHeader.Value); if (nameAndAddressReplyTo != null) { this._headerReplyTo = nameAndAddressReplyTo; } break; case "SUBJECT": this._subject = currentHeader.Value.Trim(); break; case "TO": string[] headerTos = currentHeader.Value.Split('\n'); foreach(string headerTo in headerTos) { eMailAddress nameAndAddressTo = this.ParseEMailNameAndAddress(headerTo); if (nameAndAddressTo != null) { this._headerTo.Add(nameAndAddressTo); } } break; } } this._message = String.Join("\r\n", messageLines); }
public void ParseData(string data) { bool header = true; this._rawHeader = new List <KeyValuePair <string, string> >(); List <string> messageLines = new List <string>(); string[] lines = data.Split('\n'); KeyValuePair <string, string> lastHeader = new KeyValuePair <string, string>("", ""); foreach (string line in lines) { string trimmedLine = line.Trim(); if (header && trimmedLine == String.Empty) { header = false; if (lastHeader.Key != String.Empty) { this._rawHeader.Add(lastHeader); lastHeader = new KeyValuePair <string, string>("", ""); } continue; } if (header) { KeyValuePair <string, string> currentHeader = this.ParseHeaderLine(trimmedLine); if (currentHeader.Key == String.Empty && currentHeader.Value != String.Empty) { if (lastHeader.Key != String.Empty) { lastHeader = new KeyValuePair <string, string>(lastHeader.Key, lastHeader.Value + "\r\n" + currentHeader.Value); } } else if (currentHeader.Key != String.Empty) { if (lastHeader.Key != String.Empty) { this._rawHeader.Add(lastHeader); } lastHeader = currentHeader; } } else { if (trimmedLine == "..") { trimmedLine = "."; } messageLines.Add(trimmedLine); } } foreach (KeyValuePair <string, string> currentHeader in this._rawHeader) { switch (currentHeader.Key.ToUpper()) { case "CC": string[] headerCcs = currentHeader.Value.Split('\n'); foreach (string headerCc in headerCcs) { eMailAddress nameAndAddressCc = this.ParseEMailNameAndAddress(headerCc); if (nameAndAddressCc != null) { this._headerCc.Add(nameAndAddressCc); } } break; case "DATE": try { string timezoneCleanedDate = Regex.Replace(currentHeader.Value.Trim(), @"\s+\((CEST|GMT|UTC)\)$", "", RegexOptions.Compiled); this._headerDate = DateTime.Parse(timezoneCleanedDate); } catch (Exception e) { logger.ErrorException("error while parsing the eMail header date: " + currentHeader.Value.Trim(), e); } break; case "FROM": eMailAddress nameAndAddressFrom = this.ParseEMailNameAndAddress(currentHeader.Value); if (nameAndAddressFrom != null) { this._headerFrom = nameAndAddressFrom; } break; case "REPLY-TO": eMailAddress nameAndAddressReplyTo = this.ParseEMailNameAndAddress(currentHeader.Value); if (nameAndAddressReplyTo != null) { this._headerReplyTo = nameAndAddressReplyTo; } break; case "SUBJECT": this._subject = currentHeader.Value.Trim(); break; case "TO": string[] headerTos = currentHeader.Value.Split('\n'); foreach (string headerTo in headerTos) { eMailAddress nameAndAddressTo = this.ParseEMailNameAndAddress(headerTo); if (nameAndAddressTo != null) { this._headerTo.Add(nameAndAddressTo); } } break; } } this._message = String.Join("\r\n", messageLines); }