你也可以看看后台打印了什么信息,其实后台的信息也很重要的21cn发邮件需要smtp认证,你需要写一个认证类,有没有啊?

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/874/874715.xml?temp=.4623377
      

  2.   

    我的源代码为下面两大段,希望各位高手给于意见和解决谢谢。
    <%@ page language="java" import="java.util.*,javax.mail.*,javax.mail.internet.*,SmtpAuth,javax.activation.*"%>
    <%try{
                String host="smtp.21cn.com";
                String from="****@21cn.com";
                String to="****@21cn.com";
                String username="****";
                String password="****";
                String body="hello ,this is only a test!";            // Get system properties
                // Properties props = System.getProperties(); 很多例子中是这样的,其实下面这句更好,可以用在applet中
                Properties props = new Properties();
                // Setup mail server
                props.put("mail.transport.protocol", "smtp");
                props.put("mail.smtp.host", host);
                props.put("mail.smtp.port","25");
                //props.put("mail.transport.protocol", "true"); //这样才能通过验证
                System.out.println("error is cause?\n");
               props.put("mail.smtp.auth", "true");
                // Get session
               // Session sessionDLT = Session.getDefaultInstance(props);
    //           javax.mail.PasswordAuthentication sa=new javax.mail.PasswordAuthentication(username,password);
                SmtpAuth sa=new SmtpAuth();
                sa.getuserinfo(username,password);
                Session sessionDLT= Session.getInstance(props,sa);
                // watch the mail commands go by to the mail server
                sessionDLT.setDebug(true);
                    // Define message
                MimeMessage message = new MimeMessage(sessionDLT);
                message.setFrom(new InternetAddress(from));
                message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
                message.setSubject("Hello JavaMail");
                message.setSentDate(new Date());
                //message.setDataHandler(new javax.activation.DataHandler(new pipi.jaf.StringDataSource(body,"text/html")));
                //out.println("Hello JavaMail");
                //out.println("welcome to JavaMail");
                message.setDataHandler(new DataHandler(body,"text/html;charset=us-ascii"));
                //message.setText("Welcome to JavaMail");
                //message.setText(body);
                message.setContent("welcome","text/plain");
                //             message.saveChanges();            Transport transport = sessionDLT.getTransport("smtp");
             //   transport.connect(host, username, password);
                transport.send(message);
               // transport.send(message);
                //transport.sendMessage(message, message.getAllRecipients());
                //transport.close();
                  out.println("this is  a test.");
                // Send message
       //         message.saveChanges();}catch(Exception e){
      out.println(e.getMessage());
    }%>
    附上一个类SmtpAuth
    import java.util.Date;
    import java.util.*;
    import java.util.Hashtable;
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.*;public class SmtpAuth extends javax.mail.Authenticator{
    private String user,password;
    public void getuserinfo(String getuser,String getpassword){
    user=getuser;
    password=getpassword;
    }
    protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
    return new  javax.mail.PasswordAuthentication(user,password);
    }
    }