估计你的main方法也没有通过吧,只是这个exception抛出需要很长时间。
解决你的这个问题,有两种方法:
1、用你的smtp服务的用户名和密码去验证。
2、自己装一个Mail Server给你自己提供smtp服务。

解决方案 »

  1.   

    我在main函数中通过了,而且信可以在outlook中收到,但是如果用页面传回来的值就不行了。请问一下自己定义的session会不会对mail session有影响?
      

  2.   

    你指定发送的smtp server地址了吗?有可能是你在页面中的时候和你使用main的时候使用的
    不是同一个smtp server,要看你的代码才行
      

  3.   


    通过页面上传的参数有问题!
    你可以检测一下是否与你直接在Main里写的一致。这往往有空格和编码问题。
      

  4.   

    空格是不是可以用trim去掉吗?我得页面编码是gb2312
      

  5.   

    我写了一个测试的程序,我已经测试通过你可参考一下
    mailtest.html:<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head><body ><form name="form1" method="post" action="sendmail.jsp" valign="top">
      收信人:<input type="text" name="to"><br>
      发信人:<input type="text" name="from"><br>
      主   题:  <input type="text" name="subject"><hr>
      par1:<textarea name="msgpart1" rows="5"   columns="50" ></textarea><br>
      par2:<textarea name="msgpart2" rows="5"   columns="50" ></textarea ><br>
      <input type="submit" name="Submit" value="提交">
      <input type="submit" name="reset" value="重填">
    </form>
      
    </body>
    </html>sendmail.jsp:<%@ page import="java.util.*" %>
    <%@ page import="javax.mail.*" %>
    <%@ page import="javax.mail.internet.*" %>
    <%@ page import="javax.naming.*"%>
    <%@ page contentType="text/html; charset=GBK" %>
    <html>
    <head>
    <title>sendmail</title>
    </head>
    <body>
    <%! String toGb2312(String str){
    try{
    byte[] str_byte = str.getBytes("ISO8859_1");
    String str_gb2312 = new String(str_byte,"GB2312");
    return str_gb2312;
    }catch(Exception e)
    {
    return e.getMessage();
    }
    }

    %>
    <%
        //InitialContext ic = new InitialContext();
        //Session sess = (Session)ic.lookup("java:comp/evn/mail/mymail");
        Properties props = new Properties();
        props = System.getProperties();
        props.put("mail.smtp.host","smtp.21cn.com");
        props.put("mail.smtp.auth","true");
        
        Session sess = Session.getDefaultInstance(props,null);
        MimeMessage m = new MimeMessage(sess);
        MimeBodyPart part1 = new MimeBodyPart();
        String msg1 = request.getParameter("msgpart1");
        String msg2 = request.getParameter("msgpart2");
        msg1 = toGb2312(msg1);
        msg2 = toGb2312(msg2);
        //part1.setContent(request.getParameter("msgpart1"));
        part1.setText(msg1);
        MimeBodyPart part2 = new MimeBodyPart();
        part2.setText(msg2);
        //part2.setContent(request.getParameter("msgpart2"));
        MimeMultipart mp = new MimeMultipart();
        mp.addBodyPart(part1);
        mp.addBodyPart(part2);
        m.setContent(mp);        String from = request.getParameter("from");
            String to = request.getParameter("to");
        m.setFrom(new InternetAddress(from));
        m.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
        String subject = request.getParameter("subject");
        subject = toGb2312(subject);
        m.setSubject(subject);
            Transport transport = sess.getTransport("smtp");
            transport.connect((String)props.get("mail.smtp.host"),user,password);
            transport.sendMessage(m,m.getRecipients(Message.RecipientType.TO));
          //  transport.send(m);
        //Transport.send(m);
        out.println("发送成功!.");
    %>
    </body>
    </html>
    只需要把transport.connect((String)props.get("mail.smtp.host"),user,password);
    里的user,和password改为你用户名和密码
    good luck!!!