Example #1
0
        public void 正常系(InetKind inetKind, SmtpClientAuthKind kind)
        {
            //setUp
            var sut = CreateSmtpClient(inetKind);

            //exercise
            Assert.That(sut.Connect(), Is.EqualTo(true));
            Assert.That(sut.Helo(), Is.EqualTo(true));
            Assert.That(sut.Auth(kind, "user1", "user1"), Is.EqualTo(true));
            Assert.That(sut.Mail("1@1"), Is.EqualTo(true));
            Assert.That(sut.Rcpt("*****@*****.**"), Is.EqualTo(true));
            Assert.That(sut.Data(new Mail()), Is.EqualTo(true));

            Assert.That(sut.Quit(), Is.EqualTo(true));

            //tearDown
            sut.Dispose();
        }
Example #2
0
        public void 正常系(InetKind inetKind, SmtpClientAuthKind kind)
        {
            //setUp
            var sut = CreateSmtpClient(inetKind);

            //exercise
            Assert.That(sut.Connect(), Is.EqualTo(true));
            Assert.That(sut.Helo(), Is.EqualTo(true));
            Assert.That(sut.Auth(kind, "user1", "user1"), Is.EqualTo(true));
            Assert.That(sut.Mail("1@1"), Is.EqualTo(true));
            Assert.That(sut.Rcpt("*****@*****.**"), Is.EqualTo(true));
            Assert.That(sut.Data(new Mail()), Is.EqualTo(true));

            Assert.That(sut.Quit(), Is.EqualTo(true));

            //tearDown
            sut.Dispose();
        }
Example #3
0
        public bool Auth(SmtpClientAuthKind kind,String user, String pass)
        {
            //トランザクションでない場合エラー
            if (Status != SmtpClientStatus.Transaction) {
                SetLastError("Auth() Status != Transaction");
                return false;
            }
            //AUTH送信
            var authStr="";
            switch (kind){
                case SmtpClientAuthKind.Login:
                    authStr = "AUTH LOGIN";
                    break;
                case SmtpClientAuthKind.Plain:
                    authStr = "AUTH PLAIN";
                    break;
                case SmtpClientAuthKind.CramMd5:
                    authStr = "AUTH CRAM-MD5";
                    break;
            }
            if (!SendCmd(authStr)){
                return false;
            }
            //334受信
            if (!RecvStatus(334)){
                return false;
            }
            //ユーザ・パスワード送信
            switch (kind){
                case SmtpClientAuthKind.Plain:
                    //ユーザ名送信
                    var str = String.Format("{0}\0{1}\0{2}", user, user, pass);
                    if (!SendCmd(String.Format(Base64.Encode(str)))) {
                        return false;
                    }
                    break;
                case SmtpClientAuthKind.Login:
                    //ユーザ名送信
                    if (!SendCmd(String.Format(Base64.Encode(user)))) {
                        return false;
                    }
                    //334受信
                    if (!RecvStatus(334)) {
                        return false;
                    }
                    //パスワード送信
                    if (!SendCmd(String.Format(Base64.Encode(pass)))) {
                        return false;
                    }
                    break;
                case SmtpClientAuthKind.CramMd5:
                    //MD5送信
                    var timestamp = _recvStr.Split(' ')[1];
                    var s = string.Format("{0} {1}", user, Md5.Hash(pass, Base64.Decode(timestamp)));
                    if (!SendCmd(Base64.Encode(s))) {
                        return false;
                    }
                    break;

            }
            //235受信
            if (!RecvStatus(235)) {
                return false;
            }
            Status = SmtpClientStatus.Transaction;
            return true;
        }
Example #4
0
        public bool Auth(SmtpClientAuthKind kind, String user, String pass)
        {
            //トランザクションでない場合エラー
            if (Status != SmtpClientStatus.Transaction)
            {
                SetLastError("Auth() Status != Transaction");
                return(false);
            }
            //AUTH送信
            var authStr = "";

            switch (kind)
            {
            case SmtpClientAuthKind.Login:
                authStr = "AUTH LOGIN";
                break;

            case SmtpClientAuthKind.Plain:
                authStr = "AUTH PLAIN";
                break;

            case SmtpClientAuthKind.CramMd5:
                authStr = "AUTH CRAM-MD5";
                break;
            }
            if (!SendCmd(authStr))
            {
                return(false);
            }
            //334受信
            if (!RecvStatus(334))
            {
                return(false);
            }
            //ユーザ・パスワード送信
            switch (kind)
            {
            case SmtpClientAuthKind.Plain:
                //ユーザ名送信
                var str = String.Format("{0}\0{1}\0{2}", user, user, pass);
                if (!SendCmd(String.Format(Base64.Encode(str))))
                {
                    return(false);
                }
                break;

            case SmtpClientAuthKind.Login:
                //ユーザ名送信
                if (!SendCmd(String.Format(Base64.Encode(user))))
                {
                    return(false);
                }
                //334受信
                if (!RecvStatus(334))
                {
                    return(false);
                }
                //パスワード送信
                if (!SendCmd(String.Format(Base64.Encode(pass))))
                {
                    return(false);
                }
                break;

            case SmtpClientAuthKind.CramMd5:
                //MD5送信
                var timestamp = _recvStr.Split(' ')[1];
                var s         = string.Format("{0} {1}", user, Md5.Hash(pass, Base64.Decode(timestamp)));
                if (!SendCmd(Base64.Encode(s)))
                {
                    return(false);
                }
                break;
            }
            //235受信
            if (!RecvStatus(235))
            {
                return(false);
            }
            Status = SmtpClientStatus.Transaction;
            return(true);
        }