Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
		public void SetHeaderFrom(eMailAddress headerFrom) {
			this._headerFrom = headerFrom;
		}
Ejemplo n.º 3
0
		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);
		}
Ejemplo n.º 4
0
		public void SetReplyTo(eMailAddress mailAddress) {
			this._headerReplyTo = mailAddress;
		}
Ejemplo n.º 5
0
		public void SetReplyTo(string name, string address) {
			this._headerReplyTo = new eMailAddress(name, address);
		}
Ejemplo n.º 6
0
		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);
		}
Ejemplo n.º 7
0
 public void SetHeaderFrom(eMailAddress headerFrom)
 {
     this._headerFrom = headerFrom;
 }
Ejemplo n.º 8
0
 public void SetReplyTo(string name, string address)
 {
     this._headerReplyTo = new eMailAddress(name, address);
 }
Ejemplo n.º 9
0
 public void SetReplyTo(eMailAddress mailAddress)
 {
     this._headerReplyTo = mailAddress;
 }
Ejemplo n.º 10
0
        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);
        }