当前位置:  技术问答>java相关

初学关于SOCKET的问题

    来源: 互联网  发布时间:2017-03-17

    本文导语:  各位大虾:    小弟刚学JAVA的网络编程,现在根据书上的例子使用socket中向smtp发送指令来 发送邮件: 以下是主要代码: socket = new Socket(InetAddress.getByName(host),Integer.parseInt(port));          //记录传输信息     ...

各位大虾:
   小弟刚学JAVA的网络编程,现在根据书上的例子使用socket中向smtp发送指令来
发送邮件:
以下是主要代码:

socket = new Socket(InetAddress.getByName(host),Integer.parseInt(port));
         //记录传输信息
        frame.jLog.append("C: CONNECTED TO " + host+"port:"+linesep);

        try{
          //创建流          
          inData = new BufferedReader(new InputStreamReader (socket.getInputStream()));
          outData = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

          msg = "220 " + host + "Simple Mail Transfer Service readly";
          //此函数是用于显示服务器回显的信息  
          SMTPResponse("220",msg);

          //与服务器建立信任
          msg = "HELO " + host;
          //此函数用于向服务器发送指令,在命令后加上
          this.SMTPSend(msg,true,true);

          //CHECK response from server(helo)
          msg = "250 OK" + host;
          SMTPResponse("250 ",msg);

          //check mail from address
          msg = "MAIL FROM :";
          SMTPSend(msg,true,true);

          //check reponse from server(mail from )
          SMTPResponse("250","250 OK","No such user here");

          //check rcpt to address are valid or not
          StringTokenizer tokensizer =
               new StringTokenizer(to,",");

          while(tokensizer.hasMoreTokens())
          {
            String rcpTo = tokensizer.nextToken().trim();

            msg = "RCPT TO :";
            SMTPSend(msg,true,true);

            //check response from server(RCTP to)
            msg = "250 OK";
            SMTPResponse("250","250 OK","No such user here");

          }

          //start to send message content
          msg = "DATA";
          SMTPSend(msg,true,true);

          msg = "354 Start mail input;end with .";
          SMTPResponse("354",msg);

          //Start date
          Date sentDate = new Date();
          SimpleDateFormat formatter1 = new SimpleDateFormat("EEE, d MMM yyyy hh:mm:ss z");
          msg = "Date:" + formatter1.format(sentDate);
          SMTPSend(msg,true,false);

          //start From
          msg = "From: " + addr.trim();
          SMTPSend(msg,true,false);

          //start to
          msg = "To: " + to;
          SMTPSend(msg,true,false);

          //start subject
          msg = "Subject: " + subject;
          SMTPSend(msg,true,false);

          outData.write('r');
          outData.write('n');

          //start content
          StringBuffer content = new StringBuffer(msgText.length());

          int k = 0,l;
          while((l = msgText.indexOf("n.",k))!= -1)
          {
            content.append(msgText.substring(k,l) + "n..");
            k = l + 2;
          }

          if (k >0)
          {
            content.append(msgText.substring(k));
            msg = content.toString();
          }else
          {
            msg = msgText+".";
          }
          //JOptionPane.showMessageDialog(null,msg);
          SMTPSend(msg,true,false);

          msg = String.valueOf(".");

          SMTPSend(msg,true,true);

          msg = "250 0K";
          SMTPResponse("250",msg);

          //end of contents

          msg = "QUIT";
          SMTPSend(msg,true,true);

          //SMTPResponse("221",msg);

          msg = "221" + host + "serviece closing transimisoon channe";
          SMTPResponse("221",msg);

          //
          outData.close();
          inData.close();
          socket.close();


   ...........


但是执行的时候提示我要smtp发送的权限。但是,我看书上说用SOCKET发送是不要口令和权限的,只是POP才需要。请问各位是怎么回事,是不是我这本书太旧还是我没设置好指令。
  返回错误是(c是客户发出的指令,S是服务器返回的信息):
   C:Trying to connect to host[ smtp.21cn.com] ,port[25]
C: CONNECTED TO smtp.21cn.comport:

S:220 smtp.21cn.comSimple Mail Transfer Service readly

c:HELO smtp.21cn.com

S:250 smtp.21cn.com

c:MAIL FROM :

s:250 553 From , message blocked, you are not authorized to send mail, authentication is required.

S:250 OK

c:RCPT TO:

s:250 503 Bad sequence of commands

S:250 OK

c:DATA

S:354 503 Need RCPT before DATA.

S:354 Start mail input;end with .

c:Date:星期二, 10 十二月 2002 12:12:14 CST

c:From: wenchengli_2000@21cn.com

c:To: wenchengli_2000@21cn.com

c:Subject: test

c:sssssssss.

c:.

S:250 500 Syntax error, command unrecognized

S:250 0K

c:QUIT

S:221 500 Syntax error, command unrecognized

S:221smtp.21cn.comserviece closing transimisoon channe


|
这是邮件服务器的设置问题:有的邮件服务器发送的时候也是需要登陆的,如果不登陆就无法发送,为了避免这个问题,你可以自己搭建一个简单的email server。

    
 
 

您可能感兴趣的文章:

  • 初学内核编程,在内核态下怎么用socket通信?
  • 初学socket的疑惑
  • 初学socket,求教关于listen和accept关系的问题。
  • 初学者的socket编程问题
  • 发送UDP,Socket operation on non-socket,初学,请指教
  • linux socket sendto( )函数问题,初学,大家指点!
  • socket编程的问题(初学者问)
  • 初学者的问题我是linux初学者,我想问一下在windows里下载的大于1.44M文件如何转移到linux分区里?
  • 初学者:不是问题的问题?
  • 编译参数问题,初学者的问题,请多帮忙
  • 各位高手大家好,我是初学LINUX想请教几个问题
  • 概念问题----初学者的问题
  • 初学者的问题??在线等待。
  • 初学者的问题,关于LINUX的安装的问题,谢谢高手执教!!!
  • 初学Linux遇上问题!
  • 初学小问题UNIX
  • 初学者的一个好菜的问题:有关菜单项的问题
  • 初学Linux驱动问题(1)
  • 初学者的关于ls的问题
  • 请教大家!!!初学Linux的问题!!
  • Free Java的初始设置问题----初学者求教.
  • 初学JAVA的第一个问题
  • java 初学者的问题???
  • 初学者的问题!
  • 初学者问题,Unix Shell
  • linux初学者的一些问题
  • 初学者问题(2):关于super的使用问题,请大家多多帮忙。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学 java 的朋友来和我交朋友,我也是初学。我的 QQ 号是 33555085
  • 又一个初学者的困惑!如果您是个大虾,请你一定要进来看看,指点迷津!如果您也是个初学者,那么您也一定要进来,也许我们有一样的遭遇!
  • 我是个初学者,希望指点明津
  • 初学者用什么工具好?JBUILDER?JDK?
  • 对于初学者应该看什么样的java书籍
  • 初学java应该看那些书?
  • 初学linux看哪本书好?
  • 初学java,该看那些书,请朋友们指教
  • 我是初学者,该用什么java的“编译器”????
  • 初学java什么书好?
  • 对于初学者应该看什么样的书
  • 初学者这样检验自己的学习效果呢?
  • java开源软件 iis7站长之家
  • 初学者的疑问
  • 从初学Linux到内核开发
  • 初学java的话,从何入手呢?vj++,还是jbuilder?
  • linux初学者应该看什么书
  • 一个初学java的人,请教众位高手
  • 初学Linux 装RedHat9 好 还是Fedora10 好呢
  • 初学JAVA,想认识几个这方面的朋友,顺便问一个小问题。。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3