예제 #1
0
        internal static Email Convert(OpenPop.Mime.Message m)
        {
            System.Net.Mail.MailMessage message = m.ToMailMessage();

            Email mail = new Email();
            mail.From = message.From;
            mail.To = message.To;
            foreach (var item in message.Attachments)
            {
                mail.Attachments.Add(new Attachment(item.Name, item.ContentStream));
            }
            return mail;
        }
예제 #2
0
파일: EmailManager.cs 프로젝트: macki/razem
        /// <summary>
        /// Save Email
        /// </summary>
        /// <param name="email"></param>
        private void SaveEmail(OpenPop.Mime.Message email)
        {
            System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();

            string strBody = "";
            if (email.MessagePart.Body != null)
            {
                strBody = enc.GetString(email.MessagePart.Body);
            }
            else if (email.MessagePart.MessageParts[0].Body != null)
            {
                strBody = enc.GetString(email.MessagePart.MessageParts[0].Body);
            }
            else if (email.MessagePart.MessageParts[1].Body != null)
            {
                strBody = enc.GetString(email.MessagePart.MessageParts[1].Body);
            }

            var item = new EmailModel { Data = email.Headers.DateSent, Sender = email.Headers.From.MailAddress.ToString(), Title = email.Headers.Subject, MessageBody = strBody, Subject = email.Headers.Subject };

            dbStore.EmailModel.Add(item);
            dbStore.SaveChanges();
        }
예제 #3
0
        private bool Spamfilter(OpenPop.Mime.Header.MessageHeader mailMessageHeader)
        {
            // Check if the messageheader contains a messageid, if it doesn't its most likely a spam mail and we are ignoring it.
            if (mailMessageHeader.MessageId != null)
                return true;

            // Return false because a true is not returned above.
            return false;
        }
예제 #4
0
	    OpenPop.Mime.MessagePart GetBodypartB(
            OpenPop.Mime.Header.MessageHeader headers, uint uid,
            string partNumber, bool seen = true, string mailbox = null) {

	        AssertValid();
			lock (sequenceLock) {
				PauseIdling();
				SelectMailbox(mailbox);
				StringBuilder builder = new StringBuilder();
				string tag = GetTag();
				string response = SendCommandGetResponse(tag + "UID FETCH " + uid +
					" (BODY" + (seen ? null : ".PEEK") + "[" + partNumber + "])", false);
                using (var ms = new MemoryStream()) { 
				    while (response.StartsWith("*")) {
					    Match m = Regex.Match(response, @"\* \d+ FETCH .* {(\d+)}");
					    if (m.Success) {
						    int size = Convert.ToInt32(m.Groups[1].Value);
					        var data = GetBytes(size);
                            ms.Write(data, 0, data.Length);
						    response = GetResponse();
						    if (!Regex.IsMatch(response, @"\)\s*$"))
							    throw new BadServerResponseException(response);
					    } else {
						    // Some servers inline the data in the FETCH response line.
						    m = Regex.Match(response, "\\* \\d+ FETCH \\(.*\"(.*)\".*\\)");
						    if (m.Success)
							    builder.Append(m.Groups[1]);
					    }
					    response = GetResponse(false);
				    }
				    ResumeIdling();
				    if (!IsResponseOK(response, tag))
					    throw new BadServerResponseException(response);

                    var type = typeof (OpenPop.Mime.MessagePart);

                    var ctor = type.GetConstructor(
                        BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, Type.DefaultBinder,
                        new [] { typeof (byte[]), typeof (OpenPop.Mime.Header.MessageHeader) }, new ParameterModifier[0]);

                    try {
                        return (OpenPop.Mime.MessagePart) ctor.Invoke(
                            new object[] { ms.ToArray(), headers });
                    }
                    catch (Exception exc) {
                        throw new LocalException(exc);
                    }
                }
			}
	    }