你的Transport没有连接呀:
public class SendMail {
    /**
     * 待发送的邮件
     */
    private Mail mail;    /**
     * 发送邮件的配置
     */
    private MailBox mailBox;    /**
     * 传入待发送的邮件
     * 
     * @param mailBox
     *            发送邮件的配置信息
     * @param mail
     *            发送的邮件
     */
    public SendMail(MailBox mailBox, Mail mail) {
        this.mail = mail;
        this.mailBox=mailBox;
    }    protected void send() throws Exception {
        //发送邮件使用的服务器
        String hostName = mailBox.getHostName();
        //连接服务器的用户名
        String userName = mailBox.getUserName();
        //连接服务器的用户密码
        String password = mailBox.getPassword();        //Properties env = System.getProperties();
        Properties env=new Properties();
        //存储发送邮件服务器的信息
        env.put("mail.smtp.host", hostName);
        //同时通过验证
        env.put("mail.smtp.auth", "true");        //得到登陆器
        AbstractAuthenticator authenticator = MailElementFactory.getInstance()
                .createAuthenticator();
        //根据属性新建一个邮件会话
        Session session = Session.getDefaultInstance(env);
        session.setDebug(false);        //创建一个消息
        MimeMessage message = new MimeMessage(session);
        //设定该消息的信息        //设定发件人
        UserEMailAddress fromAddress = mail.getFromUser();
        if (fromAddress != null) {
            String fromUser = fromAddress.getUserName();
            String fromEmail = fromAddress.getEmailAddress();
            InternetAddress fromInter = new InternetAddress(fromUser, fromEmail);
            message.setFrom(fromInter);
        } else {
            InternetAddress from=new InternetAddress("[email protected]");
            message.setFrom(from);
        }        //设定发送到
        Collection toUser = mail.getToUser();
        if (toUser != null && toUser.size() > 0) {
            Iterator iter = toUser.iterator();
            while (iter.hasNext()) {
                UserEMailAddress address = (UserEMailAddress) iter.next();
                addAddress(message, address, Message.RecipientType.TO);
            }
        }        //设定抄送到
        Collection copyUser = mail.getCopyUser();
        if (copyUser != null && copyUser.size() > 0) {
            Iterator iter = copyUser.iterator();
            while (iter.hasNext()) {
                UserEMailAddress address = (UserEMailAddress) iter.next();
                addAddress(message, address, Message.RecipientType.CC);
            }
        }        //密送到
        Collection copySecretUser = mail.getCopySecrecyUser();
        if (copySecretUser != null && copySecretUser.size() > 0) {
            Iterator iter = copySecretUser.iterator();
            while (iter.hasNext()) {
                UserEMailAddress address = (UserEMailAddress) iter.next();
                addAddress(message, address, Message.RecipientType.BCC);
            }
        }        //设定回复地址
        Collection repliesUser = mail.getRepliesUser();
        if (repliesUser != null && repliesUser.size() > 0) {
            Iterator replyIter = repliesUser.iterator();
            Collection replyAddresses = new ArrayList();
            while (replyIter.hasNext()) {
                UserEMailAddress reAddress = (UserEMailAddress) replyIter
                        .next();
                String replyUserName = reAddress.getUserName();
                String replyEmail = reAddress.getEmailAddress();
                InternetAddress re = new InternetAddress(replyUserName,
                        replyEmail);
                replyAddresses.add(re);
            }
            message.setReplyTo((Address[]) replyAddresses
                    .toArray(new Address[] {}));
        }
        
        //设定需要发送收条,第二参数为回复地址,可以多个设定
        if(mail.isReplySign()){
            //设定收条地址
            repliesUser = mail.getRepliesUser();
            if (repliesUser != null && repliesUser.size() > 0) {
                Iterator replyIter = repliesUser.iterator();
                Collection replyAddresses = new ArrayList();
                while (replyIter.hasNext()) {
                    UserEMailAddress reAddress = (UserEMailAddress) replyIter
                            .next();
                    String replyUserName = reAddress.getUserName();
                    String replyEmail = reAddress.getEmailAddress();
                    InternetAddress re = new InternetAddress(replyUserName,
                            replyEmail);
                    replyAddresses.add(re);
                }
                message.addHeader("Disposition-Notification-To","[email protected],[email protected]");
            }     
        }
       
        
        //设定主题
        message.setSubject(mail.getSubject());        //设定发送时间
        message.setSentDate(mail.getSendDate());        //创建消息体
        buildMessageContent(message);
        //加了没有反映
//        message.setFlag(Flags.Flag.DRAFT,true);
//        message.setFlag(Flags.Flag.SEEN,true);
                
        
        
        
        message.saveChanges();
        
        Transport transport=session.getTransport("smtp");
        MailListener listener=new MailListener();
        transport.addTransportListener(listener);
        transport.addConnectionListener(listener);
        transport.connect(hostName,userName,password);
        transport.sendMessage(message,message.getAllRecipients());
        transport.close();
    } }

解决方案 »

  1.   

    protected void buildMessageContent(Message message)throws Exception {
        // create and fill the first message part
        MimeBodyPart textBody = new MimeBodyPart();
        textBody.setText(mail.getBodyText());     //添加附件
        Multipart multiPart=new MimeMultipart();
        Collection attackments=mail.getMutiparts();
        if(attackments!=null&&attackments.size()>0){
            Iterator iter=attackments.iterator();
            while(iter.hasNext()){
                Attackment attackment=(Attackment)iter.next();
                String fileName=attackment.getFileName();
                MimeBodyPart multiBodyPart=new MimeBodyPart();
                FileDataSource ds=new FileDataSource(fileName);
                
                multiBodyPart.setDataHandler(new DataHandler(ds));
                String separator=File.separator;
                int index=fileName.lastIndexOf(separator);
                String name=fileName.substring(index+1);
                multiBodyPart.setFileName(name);
                multiPart.addBodyPart(multiBodyPart);
            }
        }
        message.setContent(multiPart);
        }    protected void addAddress(Message message, UserEMailAddress address,
                Message.RecipientType type) throws MailException {
            try {
                String toName = address.getUserName();
                String emailAddress = address.getEmailAddress();
                InternetAddress inter = new InternetAddress();
                inter.setPersonal(toName);
                inter.setAddress(emailAddress);
                message.setRecipient(type, inter);
            } catch (Exception e) {
                throw new MailException(e.fillInStackTrace());
            }
        }    public static void main(String[] args) throws Exception {
            MailBox mailBox=new MailBox();
            mailBox.setHostName("localhost");
            mailBox.setUserName("csm");
            mailBox.setPassword("7570083");
            mailBox.setUserUse("d:\\mail\\localhost");
            
            Mail mail=new Mail(mailBox.findMailFolderById(MailFolder.NOT_SEND_FOLDER));
            Collection toUser=new ArrayList();
            UserEMailAddress to1=new UserEMailAddress("csm","csm@localhost");
            toUser.add(to1);
            mail.setToUser(toUser);
            mail.setSubject("mySend");
            UserEMailAddress from=new UserEMailAddress("csm","[email protected]");
            mail.setFromUser(from);
            mail.setBodyText((new Date()).toGMTString());
            //设定附件
            Attackment attackment=new Attackment();
            File file=new File("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java");
            attackment.setFileName("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java");
            StringBuffer attackmentBuffer=new StringBuffer();
            String line=null;
            BufferedReader reader=new BufferedReader(new FileReader(file));
            while(true){
             line=reader.readLine();
             if(line==null){
             break;
             }
             attackmentBuffer.append(line);
            }
            attackment.setContent(attackmentBuffer.toString());
            mail.addMutipart(attackment);
            
            attackment=new Attackment();
            file=new File("D:\\eclipse\\startup.jar");
            attackment.setFileName("D:\\eclipse\\startup.jar");
            attackmentBuffer=new StringBuffer();
            line=null;
            reader=new BufferedReader(new FileReader(file));
            while(true){
             line=reader.readLine();
             if(line==null){
             break;
             }
             attackmentBuffer.append(line);
            }
            attackment.setContent(attackmentBuffer.toString());
            mail.addMutipart(attackment);
            
            SendMail test = new SendMail(mailBox, mail);
            test.send();
        }
      

  2.   

    你的这一句话有问题:  props.put("mail.smtp.host", "localhost");
    "localhost"   怎么能作为邮件服务器的地址呢?!此处应改为真实的邮件服务器地址:比如你在你公司的邮箱为:[email protected],那么应改为:props.put("mail.smtp.host", "gl.com");