给你看我使用中的代码
  public static void sendMail(String toAddress, String subject, String sendData) throws
    Exception{
    Properties props = System.getProperties();    props.put("mail.transport.protocol", "smtp");
    props.put("mail.smtp.class", "com.sun.mail.smtp.SMTPTransport");
    props.put("mail.smtp.host", "mail.******.com");
    props.put("mail.smtp.auth", "true");    Session session = Session.getDefaultInstance(props, null);    //create a message
    MimeMessage msg = new MimeMessage(session);
    InternetAddress[] toAddrs = InternetAddress.parse(toAddress, false);
    msg.setRecipients(Message.RecipientType.TO, toAddrs);
    msg.setFrom(new InternetAddress("*****@******.com"));
    msg.setSubject(subject, "gb2312");
    msg.setSentDate(new java.util.Date());
    msg.setText(sendData, "gb2312");    //transport
    Transport transport = session.getTransport("smtp");
    transport.connect((String)props.get("mail.smtp.host"),
                      "******@*******.com",
                      "*******");
    transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
    transport.close();
  }

解决方案 »

  1.   

    回复:westarea(彩色的草原) 
    老大,不行下,用你的代码也有错:如下,和我的第二个一样,怎么回事呢?
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Access to default session denied
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.SecurityException: Access to default session denied
    javax.mail.Session.getDefaultInstance(Session.java:292)
    org.apache.jsp.test_jsp._jspService(org.apache.jsp.test_jsp:80)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.6 logs.
      

  2.   

    Session.getDefaultInstance(props,(Authenticator)mailAuthenticator);
    改成 Session.getInstance(props,(Authenticator)mailAuthenticator);
      

  3.   

    回复: pigo(少壮且行英雄梦,迟暮归守温柔乡)
    还是不行,只能给自己的服务器发,给别人的一发就出错:
     
    javax.mail.SendFailedException: Invalid Addresses; nested exception is: class com.sun.mail.smtp.SMTPAddressFailedException: 450 4.7.1 ... Relaying temporarily denied. Cannot resolve PTR record for 20*.1*.12*.*8 sending failed!
      

  4.   

    参考:http://www.huihoo.com/jboss/online_manual/3.0/ch13s98.html在上述页面最后给出了。
      

  5.   


    20*.1*.12*.*8是你的ip地址吧???我没有sina邮箱,所以无法测试,大致猜测是,sina的邮件服务器对ip地址进行了反向解析,发现ip与对应发件人的email地址主机名不一致,因此被当作spam干掉了。
    这些问题与javamail自己无关。
      

  6.   


    Session mailsession = Session.getInstance(props,null);

    Session mailsession = Session.getDefaultInstance(props,null);
    是有什么区别?
    Properties props = System.getProperties();
    与Properties props = new Properties();呢?
      

  7.   

    getDefaultInstance 相当于一个静态全局变量,多次调用的时候,就必须保证传入的props,和Authenticator不变,否则会跑出异常。
    getInstance是每次都会生成一个新的Session实例。
    getDefaultInstance 可以理解成相当于缓存了一个Session实例,然后多次调用同一个实例关于两个Properties 的区别,就应该去看点最基本的入门介绍了。
    javamail已经提供src下载,建议读一下src。
      

  8.   

    多谢:
    pigo(少壮且行英雄梦,迟暮归守温柔乡)的耐心,已经可以发送简单的邮件了,下一个目标就是编码处理和附件。结贴