Exemplo n.º 1
0
        /// POP3メールサーバーへUIDLコマンドを送信します。
        /// <summary>
        /// Send uidl command to pop3 server.
        /// POP3メールサーバーへUIDLコマンドを送信します。
        /// </summary>
        /// <returns></returns>
        public List <UidlCommandResult> ExecuteUidl()
        {
            UidlCommand cm              = new UidlCommand();
            List <UidlCommandResult> l  = new List <UidlCommandResult>();
            Pop3CommandResult        rs = null;
            StringReader             sr = null;
            String line = "";

            this.CheckAuthenticate();
            rs = this.Execute(cm);
            this.CheckResponseError(rs);

            sr = new StringReader(rs.Text);
            while (sr.Peek() > -1)
            {
                line = sr.ReadLine();
                if (line == ".")
                {
                    break;
                }
                if (line.StartsWith("+OK", StringComparison.OrdinalIgnoreCase) == true)
                {
                    continue;
                }

                l.Add(new UidlCommandResult(line));
            }
            return(l);
        }
Exemplo n.º 2
0
        /// 指定したMailIndexのメールをメールサーバーから削除します。
        /// <summary>
        /// Set delete flag to specify mail index.
        /// To complete delete execution,call quit command after calling dele command.
        /// 指定したMailIndexのメールに削除フラグをたてます。
        /// 実際に削除するにはさらにQUITコマンドで削除処理を完了させる必要があります。
        /// </summary>
        /// <param name="indexList"></param>
        /// <returns></returns>
        public Boolean DeleteMail(params Int64[] indexList)
        {
            DeleCommand       cm = null;
            Pop3CommandResult rs = null;

            if (this.EnsureOpen() == Pop3ConnectionState.Disconnected)
            {
                return(false);
            }
            if (this.TryAuthenticate() == false)
            {
                return(false);
            }
            for (int i = 0; i < indexList.Length; i++)
            {
                cm = new DeleCommand(indexList[i]);
                rs = this.Execute(cm);
                if (rs.Ok == false)
                {
                    return(false);
                }
            }
            this.ExecuteQuit();
            return(true);
        }
Exemplo n.º 3
0
        /// POP3メールサーバーへAPOP認証でログインします。
        /// <summary>
        /// Log in to pop3 server by A-POP authenticate and return login success or failure as bool.
        /// POP3メールサーバーへAPOP認証でログインします。
        /// </summary>
        /// <returns></returns>
        public Boolean TryAuthenticateByAPop()
        {
            Pop3CommandResult rs         = null;
            String            TimeStamp  = "";
            Int32             StartIndex = 0;
            Int32             EndIndex   = 0;

            if (this.EnsureOpen() == Pop3ConnectionState.Connected)
            {
                //ユーザー名送信
                rs = this.Execute("user " + this.UserName, false);
                if (rs.Ok == true)
                {
                    if (rs.Text.IndexOf("<") > -1 &&
                        rs.Text.IndexOf(">") > -1)
                    {
                        StartIndex = rs.Text.IndexOf("<");
                        EndIndex   = rs.Text.IndexOf(">");
                        TimeStamp  = rs.Text.Substring(StartIndex, EndIndex - StartIndex + 1);
                        //パスワード送信
                        rs = this.Execute("pass " + Cryptography.ToMd5DigestString(TimeStamp + this.Password), false);
                        if (rs.Ok == true)
                        {
                            this._State = Pop3ConnectionState.Authenticated;
                        }
                    }
                }
            }
            return(this._State == Pop3ConnectionState.Authenticated);
        }
Exemplo n.º 4
0
        /// POP3メールサーバーへNOOPコマンドを送信します。
        /// <summary>
        /// Send noop command to pop3 server.
        /// POP3メールサーバーへNOOPコマンドを送信します。
        /// </summary>
        /// <returns></returns>
        public Pop3CommandResult ExecuteNoop()
        {
            Pop3CommandResult rs = null;

            this.EnsureOpen();
            rs = this.Execute("Noop", false);
            return(new Pop3CommandResult(rs.Text));
        }
Exemplo n.º 5
0
 private void CheckResponseError(Pop3CommandResult result)
 {
     if (result.Ok == true)
     {
         return;
     }
     throw new MailClientException(result.Text);
 }
Exemplo n.º 6
0
        /// POP3メールサーバーへRESETコマンドを送信します。
        /// <summary>
        /// Send reset command to pop3 server.
        /// POP3メールサーバーへRESETコマンドを送信します。
        /// </summary>
        /// <returns></returns>
        public Pop3CommandResult ExecuteRset()
        {
            Pop3CommandResult rs = null;

            this.CheckAuthenticate();
            rs = this.Execute("Rset", false);
            this.CheckResponseError(rs);
            return(rs);
        }
Exemplo n.º 7
0
        /// POP3メールサーバーへSTATコマンドを送信します。
        /// <summary>
        /// Send stat command to pop3 server.
        /// POP3メールサーバーへSTATコマンドを送信します。
        /// </summary>
        /// <returns></returns>
        public StatCommandResult ExecuteStat()
        {
            Pop3CommandResult rs = null;

            this.CheckAuthenticate();
            rs = this.Execute("Stat", false);
            this.CheckResponseError(rs);
            return(new StatCommandResult(rs.Text));
        }
Exemplo n.º 8
0
        /// POP3メールサーバーへTOPコマンドを送信します。
        /// <summary>
        /// Send top command to pop3 server.
        /// POP3メールサーバーへTOPコマンドを送信します。
        /// </summary>
        /// <param name="mailIndex"></param>
        /// <param name="lineCount"></param>
        /// <returns></returns>
        public Pop3CommandResult ExecuteTop(Int64 mailIndex, Int32 lineCount)
        {
            Pop3CommandResult rs = null;

            this.CheckAuthenticate();
            rs = this.Execute(new TopCommand(mailIndex, lineCount));
            this.CheckResponseError(rs);
            return(rs);
        }
Exemplo n.º 9
0
        /// POP3メールサーバーへDELEコマンドを送信します。
        /// <summary>
        /// Send dele command to pop3 server.
        /// POP3メールサーバーへDELEコマンドを送信します。
        /// </summary>
        /// <param name="mailIndex"></param>
        /// <returns></returns>
        public Pop3CommandResult ExecuteDele(Int64 mailIndex)
        {
            DeleCommand       cm = new DeleCommand(mailIndex);
            Pop3CommandResult rs = null;

            this.CheckAuthenticate();
            rs = this.Execute(cm);
            this.CheckResponseError(rs);
            return(rs);
        }
Exemplo n.º 10
0
        /// POP3メールサーバーへListコマンドを送信します。
        /// <summary>
        /// Send list command to pop3 server.
        /// POP3メールサーバーへListコマンドを送信します。
        /// </summary>
        /// <param name="mailIndex"></param>
        /// <returns></returns>
        public ListCommandResult ExecuteList(Int64 mailIndex)
        {
            ListCommand       cm = new ListCommand(mailIndex);
            Pop3CommandResult rs = null;

            this.CheckAuthenticate();
            rs = this.Execute(cm);
            this.CheckResponseError(rs);
            return(new ListCommandResult(rs.Text));
        }
Exemplo n.º 11
0
        /// POP3メールサーバーへNOOPコマンドを送信します。
        /// <summary>
        /// Send noop command to pop3 server.
        /// POP3メールサーバーへNOOPコマンドを送信します。
        /// </summary>
        /// <returns></returns>
        public Pop3CommandResult ExecuteNoop()
        {
            Pop3CommandResult rs = null;
            String            s  = "";

            this.EnsureOpen();
            s  = this.Execute("Noop", false);
            rs = new Pop3CommandResult(s);
            return(rs);
        }
Exemplo n.º 12
0
        /// POP3メールサーバーへQUITコマンドを送信します。
        /// <summary>
        /// Send quit command to pop3 server.
        /// POP3メールサーバーへQUITコマンドを送信します。
        /// </summary>
        /// <returns></returns>
        public Pop3CommandResult ExecuteQuit()
        {
            Pop3CommandResult rs = null;

            this.EnsureOpen();
            rs = this.Execute("Quit", false);
            this.CheckResponseError(rs);
            //Server disconnect connection after server received quit command, so call Close method.
            this.Close();
            return(rs);
        }
Exemplo n.º 13
0
        /// POP3メールサーバーへQUITコマンドを送信します。
        /// <summary>
        /// Send quit command to pop3 server.
        /// POP3メールサーバーへQUITコマンドを送信します。
        /// </summary>
        /// <returns></returns>
        public Pop3CommandResult ExecuteQuit()
        {
            Pop3CommandResult rs = null;
            String            s  = "";

            this.EnsureOpen();
            s = this.Execute("Quit", false);
            this.CheckResponseError(s);
            rs = new Pop3CommandResult(s);
            return(rs);
        }
Exemplo n.º 14
0
        /// 非同期でPOP3メールサーバーへQUITコマンドを送信します。
        /// <summary>
        /// Send asynchronous quit command to pop3 server.
        /// 非同期でPOP3メールサーバーへQUITコマンドを送信します。
        /// </summary>
        /// <param name="callbackFunction"></param>
        public void ExecuteQuit(Action <Pop3CommandResult> callbackFunction)
        {
            Action <String> md = responseString =>
            {
                this.CheckResponseError(responseString);
                Pop3CommandResult rs = new Pop3CommandResult(responseString);
                callbackFunction(rs);
            };

            this.EnsureOpen();
            this.BeginExecute("Quit", false, md);
        }
Exemplo n.º 15
0
        /// POP3メールサーバーへPOP認証でログインします。
        /// <summary>
        /// Log in to pop3 server by POP authenticate and return login success or failure as bool.
        /// POP3メールサーバーへPOP認証でログインします。
        /// </summary>
        /// <returns></returns>
        public Boolean TryAuthenticateByPop()
        {
            Pop3CommandResult rs = null;

            if (this.EnsureOpen() == Pop3ConnectionState.Connected)
            {
                //ユーザー名送信
                rs = this.Execute("user " + this.UserName, false);
                if (rs.Ok == true)
                {
                    //パスワード送信
                    rs = this.Execute("pass " + this.Password, false);
                    if (rs.Ok == true)
                    {
                        this._State = Pop3ConnectionState.Authenticated;
                    }
                }
            }
            return(this._State == Pop3ConnectionState.Authenticated);
        }
Exemplo n.º 16
0
 private void CheckResponseError(Pop3CommandResult result)
 {
     if (result.Ok == true) { return; }
     throw new MailClientException(result.Text);
 }