你下在的jmail.zip里面不是又非常多的例子吗,一般的应用足够了

解决方案 »

  1.   

    public static void send(final Mail sendMail) throws Exception {
         final MailBox mailBox=sendMail.getMailFolder().getMailBox();
            //发送邮件使用的服务器
            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 = sendMail.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 = sendMail.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 = sendMail.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 = sendMail.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 = sendMail.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(sendMail.isReplySign()){
                //设定收条地址
                repliesUser = sendMail.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(sendMail.getSubject());        //设定发送时间
            message.setSentDate(sendMail.getSendDate());        //创建消息体
            buildMessageContent(message,sendMail);    
            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();
        }    protected static void buildMessageContent(Message message,Mail sendMail)throws Exception {
        // create and fill the first message part
        MimeBodyPart textBody = new MimeBodyPart();
        textBody.setText(sendMail.getBodyText());     //添加附件
        Multipart multiPart=new MimeMultipart();
        Collection attackments=sendMail.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);
        }