示例#1
0
 public override string UseEncoding(interpreterContext context)
 {
     if (context.Output != null)
     {
         return Encoding.UTF8.GetString(context.Output.ToArray());
     }
     else
     {
         return string.Empty;
     }
 }
示例#2
0
        public void Interpret(interpreterContext context)
        {
            List<byte> output = new List<byte>();
            var i = 0;
            try
            {
                while (i < context.Input.Length - 2)
                {
                    if (context.Input[i] == '=' && context.Input[i + 1] == '\r' && context.Input[i + 2] == '\n')
                    {
                        //Skip
                        i += 3;
                    }
                    else if (context.Input[i] == '=')
                    {
                        string shex = context.Input;
                        shex = shex.Substring(i + 1, 2);
                        int hex = Convert.ToInt32(shex, 16);
                        byte b = Convert.ToByte(hex);
                        output.Add(b);
                        i += 3;
                    }
                    else
                    {
                        output.Add((byte)context.Input[i]);
                        i++;
                    }
                }

                context.Output = output;
            }
            catch
            {
                context.Output = null;
            }
        }
示例#3
0
        public Letter CheckLetterByIMAP(Profile user, int letterNum)
        {
            Letter newLetter = new Letter();
            newLetter.SetId();
            newLetter.ProfileId = user.Id;
            newLetter.To = user.Adress;
            newLetter.Category = "Inbox";

            bool subjectFound = false;
            bool dateFound = false;
            bool fromFound = false;

            ImapConsole console = new ImapConsole();
            console.SetSSLConnection(user);
            console.SendCommand(new ImapAuthenticate(user));
            console.ExecuteCommand();

            this.ImapRequest("$ SELECT INBOX\r\n");

            console.SendCommand(new ImapGetHeaderOfLetter(letterNum));
            List<string> letterHeader = (List<string>)console.ExecuteCommand();

            foreach (string line in letterHeader)
            {
                if (!fromFound && line.Contains("From: "))
                {
                    string thisLine = line;
                    if (line.Contains("<"))
                    {
                        thisLine = line.Substring(line.IndexOf('<') + 1, line.IndexOf('>') - line.IndexOf('<') - 1);
                        newLetter.From = thisLine;
                    }
                    else
                    {
                        newLetter.From = thisLine.Substring(6);
                    }

                    fromFound = true;
                }

                if (!dateFound && line.Length > 6 && line.Substring(0, 6) == "Date: ")
                {
                    string thisLine = line;
                    if (line.Contains("+"))
                    {
                        thisLine = line.Substring(0, line.IndexOf('+'));
                    }
                    else if (line.Contains("-"))
                    {
                        thisLine = line.Substring(0, line.IndexOf('-'));
                    }
                    
                    newLetter.SendingTime = Convert.ToDateTime(thisLine.Substring(6));
                    dateFound = true;
                }

                if (!subjectFound && line.Contains("Subject: "))
                {
                    newLetter.Subject = line.Substring(9).Replace("\r", string.Empty);
                    if (newLetter.Subject.Substring(0, 5) == "=?utf")
                    {
                        newLetter.Subject = newLetter.Subject.Substring(10, newLetter.Subject.Length - 10);
                        interpreterContext iC = new interpreterContext(newLetter.Subject);
                        DefaultExpression ex = new DefaultExpression();
                        ex.Interpret(iC);
                        newLetter.Subject = ex.UseEncoding(iC);
                    }

                    subjectFound = true;
                }

                if (subjectFound && dateFound && fromFound)
                {
                    break;
                }
            }

            console.SetSSLConnection(user);
            console.SendCommand(new ImapAuthenticate(user));
            console.ExecuteCommand();
            this.ImapRequest("$ SELECT INBOX\r\n");

            console.SendCommand(new ImapGetTextOfLetter(letterNum));
            newLetter.Body = (string)console.ExecuteCommand();

            return newLetter;
        }
示例#4
0
 public override string UseEncoding(interpreterContext context)
 {
     return Encoding.GetEncoding("Shift_JIS").GetString(context.Output.ToArray());
 }
示例#5
0
 public abstract string UseEncoding(interpreterContext context);