首先连接代理服务器,然后再发送这样的String到邮件服务器"CONNECT mail.163.com:25HTTP/1.0\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)\r\nHost: www.163.com\r\nContent-Length: 0\r\nProxy-Connection: Keep-Alive\r\nPragma: no-cache\r\n\r\n""这样就可以通过代理连接到邮件服务器上了
可是现在的代理服务器都需要验证的比如什么Basic,Digest,NTLM等等.其实最麻烦的就是代理服务器的验证

解决方案 »

  1.   

    谢谢etre(林荃),好象还是不行,可能我说的不是很清楚,我是在公司的局域网发邮件,公司的收发邮件服务器都是10.100.51.12,需要身份验证,我现在要发送邮件到www.163.com或者www.sina.com上的邮箱,也是需要身份验证的,编译抛出认证失败异常。
    代码如下:
    <% 
    String username="****@sina.com#smtp.sina.com.cn";
    String password="123456";
    try{ 
    Properties props = new Properties(); 
    Session sendMailSession; 
    Store store; 
    Transport transport; 
    sendMailSession = Session.getInstance(props, null); 
    props.put("mail.transport.protocol","smtp");
    props.put("mail.smtp.host", "10.100.51.12"); 
    props.put("mail.smtp.host", "25"); 
    //props.put( "http.proxySet", "true" );
           // props.put( "http.proxyHost",  "10.100.51.12" ) ;
            //props.put( "http.proxyPort", "25" ) ;
           props.put("mail.smtp.auth", "true");
            
    MimeMessage newMessage = new MimeMessage(sendMailSession); 
    newMessage.setFrom(new InternetAddress(request.getParameter("from"))); 
        StringTokenizer st=new StringTokenizer(request.getParameter("to"),";");
            InternetAddress toAddr[] = new InternetAddress[st.countTokens()];
            int i=0;
            while(st.hasMoreTokens())
            {
        toAddr[i]= new InternetAddress(st.nextToken());
        System.out.println("mail send to:"+toAddr[i++]);
            }
    newMessage.setSubject(request.getParameter("subject")); 
    newMessage.setSentDate(new Date()); 
    newMessage.setText(request.getParameter("text")); 
    if(jsendMail.startSend(toAddr,newMessage)) //这是一个javabeans,没有错误
    out.println("<P>Your mail has been sent.</P> "); 

    transport = sendMailSession.getTransport("smtp");
    transport.connect("10.100.51.12",username,password);
    transport.send(newMessage);
       } 
       catch(MessagingException m) 
      { 
          out.println(m.toString()); 
      } 
    %> 
    编译后的结果:
    Your mail has been sent.javax.mail.AuthenticationFailedException
      

  2.   

    jMailComposer - JSP/Servlet component to send emails 
    http://www.javazoom.net/jzservlets/servlets.html
    你上面是认证失败
      

  3.   

    不对,我弄清楚了,我公司的代理服务器根本不需要验证,所以才报错,但是如果是用163或sina的代理服务器,根本就连不上去。
      

  4.   

    首先连接代理服务器,然后再发送这样的String到邮件服务器"CONNECT mail.163.com:25HTTP/1.0\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)\r\nHost: www.163.com\r\nContent-Length: 0\r\nProxy-Connection: Keep-Alive\r\nPragma: no-cache\r\n\r\n""这样就可以通过代理连接到邮件服务器上了
    发送string到邮件服务器,应该用什么函数呢?参数又是什么?谢谢!