예제 #1
0
        /// <summary>examines a mailbox.</summary>
        /// <param name="mailboxName">Name of the mailbox.</param>
        /// <returns></returns>
        /// <exception cref="System.Exception"></exception>
        public ImapMailboxInfo Examine(string mailboxName)
        {
            var mailbox = UTF7.EncodeExtendedUTF7(mailboxName);
            var answer  = SendCommand("EXAMINE \"" + mailbox + "\"");

            if (!answer.Success)
            {
                throw new Exception(string.Format("Error at examine mailbox {0}: {1}", mailboxName, answer.Result));
            }

            return(ImapMailboxInfo.FromAnswer(mailboxName, answer));
        }
예제 #2
0
        /// <summary>Selects the mailbox with the specified name.</summary>
        /// <param name="mailboxName">Name of the mailbox.</param>
        /// <returns></returns>
        /// <exception cref="System.Exception"></exception>
        public ImapMailboxInfo Select(string mailboxName)
        {
            var mailbox = UTF7.EncodeExtendedUTF7(mailboxName);
            var answer  = SendCommand("SELECT \"{0}\"", mailbox);

            if (!answer.Success)
            {
                throw new Exception(string.Format("Error at select mailbox {0}: {1}", mailboxName, answer.Result));
            }

            SelectedMailbox = ImapMailboxInfo.FromAnswer(mailboxName, answer);
            return(SelectedMailbox);
        }
예제 #3
0
        /// <summary>Obtains a list of all present mailboxes.</summary>
        /// <returns></returns>
        public string[] ListMailboxes()
        {
            var list   = new List <string>();
            var answer = SendCommand("LIST \"\" *");

            foreach (var line in answer.GetDataLines())
            {
                if (line.StartsWith("* LIST "))
                {
                    var parts   = ImapParser.SplitAnswer(line);
                    var mailbox = parts[4].UnboxText(false);
                    mailbox = UTF7.DecodeExtendedUTF7(mailbox);
                    list.Add(mailbox);
                }
            }
            return(list.ToArray());
        }
예제 #4
0
        /// <summary>Uploads a message to the specified mailbox.</summary>
        /// <param name="mailboxName">Name of the mailbox.</param>
        /// <param name="messageData">The message data.</param>
        /// <exception cref="System.ArgumentNullException">messageData.</exception>
        public void UploadMessageData(string mailboxName, byte[] messageData)
        {
            var mailbox = UTF7.EncodeExtendedUTF7(mailboxName);

            if (messageData == null)
            {
                throw new ArgumentNullException(nameof(messageData));
            }

            var id     = PrepareLiteralDataCommand("APPEND \"" + mailbox + "\" (\\Seen) {" + messageData.Length + "}");
            var writer = new DataWriter(stream);

            writer.Write(messageData);
            writer.Write((byte)13);
            writer.Write((byte)10);
            writer.Flush();
            ReadAnswer(id, true);
        }
예제 #5
0
        public static byte[] StringToBytes(string aString, WebSocketTypeEncoding aEncoding)
        {
            try
            {
                byte[] lData = null;
                switch (aEncoding)
                {
                    #if !WINDOWS_PHONE
                case WebSocketTypeEncoding.ASCII:
                    lData = ASCIIEncoding.ASCII.GetBytes(aString);
                    break;

                case WebSocketTypeEncoding.UTF32:
                    lData = ASCIIEncoding.UTF32.GetBytes(aString);
                    break;

                case WebSocketTypeEncoding.UTF7:
                    lData = System.Text.Encoding..UTF7.GetBytes(aString);
                    break;
                    #endif
                case WebSocketTypeEncoding.UTF8:
                    lData = System.Text.Encoding.UTF8.GetBytes(aString);
                    break;

                case WebSocketTypeEncoding.Unicode:
                    lData = System.Text.Encoding.Unicode.GetBytes(aString);
                    break;

                default:
                        #if !WINDOWS_PHONE
                    lData = ASCIIEncoding.Default.GetBytes(aString);
                        #else
                    lData = System.Text.Encoding.UTF8.GetBytes(aString);
                        #endif
                    break;
                }
                return(lData);
            }
            catch (Exception lEx)
            {
                throw new Exception("invalid converting : " + lEx.Message);
            }
        }