还是不行呀,我已经把stmpHost改为stmp.163.com,但是还是不行,哎
javax.mail.SendFailedException: Sending failed; nested exception is: javax.mail.MessagingException: Unknown SMTP host: stmp.163.com; nested exception is: java.net.UnknownHostException: stmp.163.com

解决方案 »

  1.   

    发邮件的bean添出来看看,这里高手多 啊
      

  2.   

    package mail.javamail;
    public class Auth extends javax.mail.Authenticator {
        private String user,pwd;
        public Auth( String user, String pwd ) {
            this.user = user;
            this.pwd = pwd;
        }
        protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
            return new javax.mail.PasswordAuthentication( this.user, this.pwd );
        }
    }
    package mail.javamail;/**
    * 调用java mail发送邮件的类
    */
    public class sendmail {
        private String encode;//文本编码
        private boolean HTML;//文本还是html内容
        private javax.mail.Session session;
        private javax.mail.Transport transport;    public sendmail() {
            this.encode = "GBK";
            this.HTML = false;
        }    public sendmail( String encode, boolean html ) {
            this.encode = encode;
            this.HTML = html;
        }    public boolean connect( String smtpHost ) {
            return connect( smtpHost, null, null );
        }    public boolean connect( String smtpHost, String uid, String pwd ) {
            try {
                java.util.Properties properties = new java.util.Properties();
                properties.put( "mail.smtp.host", smtpHost );
                if ( uid == null || uid.equals( "" ) ) {
                    session = javax.mail.Session.getInstance( properties, null );
                } else {
                    properties.put( "mail.smtp.auth", "true" );
                    Auth auth = new Auth( uid, pwd );
                    session = javax.mail.Session.getInstance( properties, auth );
                }
                transport = session.getTransport( "smtp" );
                transport.connect();
                return true;
            }
            catch ( Exception e ) {
                System.out.println(e.getMessage());
                return false;
            }
        }    public void close() {
            if ( transport != null ) {
                try {
                    transport.close();
                }
                catch ( Exception e ) {
                    e.printStackTrace();
                }
            }
        }    public void send( String from, String to, String cc, String bcc, String subject, String text, String[] filename ) {
            try {
                javax.mail.internet.MimeMessage mimeMessage = createMimeMessage( session,from, to, cc, bcc, subject, text, filename );
                transport.sendMessage( mimeMessage, mimeMessage.getAllRecipients() );
            }
            catch ( javax.mail.MessagingException e ) {
                e.printStackTrace();  //To change body of catch statement use Options | File Templates.
            }
        }    private javax.mail.internet.MimeMessage createMimeMessage(
                javax.mail.Session session,
                String from, String to, String cc, String bcc,
                String subject, String text,
                String[] filename ) throws javax.mail.MessagingException {
            javax.mail.internet.MimeMessage message = new javax.mail.internet.MimeMessage( session );
            javax.mail.internet.InternetAddress fromAddress = new javax.mail.internet.InternetAddress( from );
            message.setFrom( fromAddress );        javax.mail.internet.InternetAddress[] toAddress = javax.mail.internet.InternetAddress.parse( to );
            javax.mail.internet.InternetAddress[] ccAddress = javax.mail.internet.InternetAddress.parse( cc );
            javax.mail.internet.InternetAddress[] bccAddress = javax.mail.internet.InternetAddress.parse( bcc );        message.setRecipients( javax.mail.Message.RecipientType.TO, toAddress );
            message.setRecipients( javax.mail.Message.RecipientType.CC, ccAddress );
            message.setRecipients( javax.mail.Message.RecipientType.BCC, bccAddress );        message.setSubject( subject, this.encode );
            //处理附件
            if ( filename != null && filename.length > 0 ) {
                javax.mail.Multipart multipart = new javax.mail.internet.MimeMultipart();            javax.mail.internet.MimeBodyPart mimeBodyPart = new javax.mail.internet.MimeBodyPart();
                if ( HTML ) {
                    mimeBodyPart.setContent( text, "text/html;charset="+this.encode );
                } else {
                    mimeBodyPart.setText( text, this.encode );
                }
                multipart.addBodyPart( mimeBodyPart );
                for ( int i = 0; i < filename.length; i++ ) {
                    try {
                        javax.mail.internet.MimeBodyPart fileBodyPart = new javax.mail.internet.MimeBodyPart();
                        javax.activation.DataSource datasource = new javax.activation.FileDataSource( filename[i] );
                        fileBodyPart.setDataHandler( new javax.activation.DataHandler( datasource ) );
                        fileBodyPart.setFileName( new java.io.File( filename[i] ).getName() );
                        multipart.addBodyPart( fileBodyPart );
                    }
                    catch ( Exception e ) {
                        e.printStackTrace();
                    }
                }
                message.setContent( multipart );
            } else {
                if ( HTML ) {
                    message.setContent( text, "text/html;charset="+this.encode );
                } else {
                    message.setText( text, this.encode );
                }
            }
            return message;
        }
    }
      

  3.   

    上面就是我的发送bean,我把我的smtp邮件服务器已经改成我的本机ip,这应该是没有问题的呀,但是就是怎么都发不出去,抛出的异常是:
    Unknow SMTP host:smtp.163.com, port:25;
    nested exception is:
           java.net.SocketException: software caused connection abort:connectstmp