错误提示:
DEBUG: setDebug: JavaMail version 1.3
1
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth trueDEBUG: SMTPTransport trying to connect to host "smtp.163.com", port 25javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;
  nested exception is:
java.net.SocketException: Software caused connection abort: connect源码:
package tvguide.user;import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;public class SendMail
{
private String host=null;
private String from=null;
private String username=null;
private String password=null;
private String subject=null;
private String content=null;
    public SendMail()
    {
    host=null;
    from=null;
    username=null;
    password=null;
    subject=null;
    content=null;
    }
    public void setHost(String str)//设置邮件服务器。
    {
    this.host=str;
    }
    public String getHost()
    {
    return this.host;
    }
    public void setFrom(String str)//设置发送地址
    {
    this.from=str;
    }
    public String getFrom()
    {
    return this.from;
    }
    public void setUsername(String str)//设置登陆名
    {
    this.username=str;
    }
    public String getUsername()
    {
    return this.username;
    }
    public void setPassword(String str)//设置登陆密码
    {
    this.password=str;
    }
    public String getPassword()
    {
    return this.password;
    }
     public void setSubject(String str)//设置主题
    {
    this.subject=str;
    }
    public String getSubject()
    {
    return this.subject;
    } public void setContent(String str)//设置内容
    {
    this.content=str;
    }
    public String getContent()
    {
    return this.content;
    }    public String[] getTo(String str)//获取多发邮件的地址,每2个邮件用逗号隔开。
    {
    char temp[]=str.toCharArray();
    int num=0;
    if(str!=null&&!str.equals(""))
        num=1;
    else 
        return null;
    for(int i=0;i<temp.length;i++)//确定一共有多少个邮件地址
    {
    if(temp[i]==',')
        num++;
    }
    System.out.println(num);
    String []To=new String [num];
    To[0]="";
    int j=0;
    for(int i=0;i<temp.length;i++)
    {
    if(temp[i]==',')
    {
    j=j+1;
    i=i+1;
    To[j]="";
    }
    To[j]+=temp[i];
    }
    return To;
    }
    public boolean SendMailto(String tto)//发送邮件。
    {
    try
    {
    // Get system properties
    Properties props = new Properties();
    // Setup mail server
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true"); //这样才能通过验证
        // Get session
        Session session = Session.getDefaultInstance(props);        // watch the mail commands go by to the mail server
        session.setDebug(true);        // Define message
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        String to[]=getTo(tto);
        for(int i=0;i<to.length;i++)
        {
             message.addRecipient(Message.RecipientType.TO,new InternetAddress(to[i]));
        }
        message.setSubject(this.subject);
        message.setText(this.content);
        // Send message
        message.saveChanges();
        Transport transport = session.getTransport("smtp");
        transport.connect(host,username,password);
        transport.sendMessage(message, message.getAllRecipients());
        //close transport
        transport.close();
        return true;
        }
        catch(MessagingException m)
        {
           System.out.println(m.toString());
           return false;
        }
    }
    public static void main(String []args)
    {
    SendMail mail=new SendMail();
    mail.setContent("This is a test!");
    mail.setFrom("[email protected] ");
    mail.setHost("smtp.163.com");
    mail.setUsername("1_test");
    mail.setSubject("Test");
    mail.setPassword("123456789");
    mail.SendMailto("[email protected]");
    }}另外,我一共引了两个包:mail.jar , activation.jar

解决方案 »

  1.   

    没有问题啊!我把你的程序执行了2次。。应该有收到吧!
    我想应该是你javamail买配置好。你将mail.jar , activation.jar这两个包放到J2SDK\jre\lib\ext中去
      

  2.   

    我是在jbuilder2005中用 这两个包我都已经引入工程了  这是提示
    D:\Borland\JBuilder2005\jdk1.4\bin\javaw -classpath "D:\src\tvguide\classes;D:\Tomcat 5.0\common\lib\servlet-api.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-tomcat-5.0.27\common\lib\servlet-api.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-tomcat-5.0.27\common\lib\jsp-api.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\commons-beanutils.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\commons-collections.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\commons-digester.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\commons-fileupload.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\commons-lang.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\commons-logging.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\commons-validator.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\jakarta-oro.jar;D:\Borland\JBuilder2005\thirdparty\jakarta-struts-1.1-lib\struts.jar;D:\src\tvguide\WebModule1\WEB-INF\lib\mail.jar;D:\src\tvguide\WebModule1\WEB-INF\lib\activation.jar;D:\Borland\JBuilder2005\jdk1.4\bin\SHOCK.jar;D:\Borland\JBuilder2005\jdk1.4\jre\bin\SHOCK.jar;D:\Borland\JBuilder2005\jdk1.4\jre\javaws\javaws.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\charsets.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\dnsns.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\ldapsec.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\localedata.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\sunjce_provider.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\im\indicim.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\im\thaiim.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\jce.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\jsse.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\plugin.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\rt.jar;D:\Borland\JBuilder2005\jdk1.4\jre\lib\sunrsasign.jar;D:\Borland\JBuilder2005\jdk1.4\lib\dt.jar;D:\Borland\JBuilder2005\jdk1.4\lib\htmlconverter.jar;D:\Borland\JBuilder2005\jdk1.4\lib\tools.jar"  tvguide.user.SendMailBean 
    javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;
      nested exception is:
    java.net.SocketException: Software caused connection abort: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:911) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:158) at javax.mail.Service.connect(Service.java:233) at javax.mail.Service.connect(Service.java:134) at tvguide.user.SendMailBean.sendMail(SendMailBean.java:74) at tvguide.user.SendMailBean.main(SendMailBean.java:24)DEBUG: setDebug: JavaMail version 1.3DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]DEBUG SMTP: useEhlo true, useAuth true
    DEBUG: SMTPTransport trying to connect to host "smtp.163.com", port 25
    失败
      

  3.   

    to hefei0603(风雨) : 你有msn吗 能告诉我下吗  我这就是发不出去  真是急啊!
      

  4.   

    你关掉WIDOWS防火墙后能成功吗?
      

  5.   

    设置本机dns.
    问题是smtp.163.com转不成ip