rt.................多帮帮忙,

解决方案 »

  1.   

    http://www.oracle.com/technetwork/java/index-jsp-139225.html
      

  2.   

    用java写收发Mail的话,必然是JavaMail
      

  3.   

    java mail
    如果需要图形界面,swing
      

  4.   

    package com.mail.test;import java.util.Date;
    import java.util.Properties;import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.Multipart;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.sql.DataSource;import sun.misc.BASE64Encoder;public class MailSender {     /** 
         * 发送单个邮件 
         * @throws Exception 
         */ 
        public void sendMail() throws Exception{         Properties props = new Properties();//创建属性对象 
            props.put("mail.smtp.host", getHost());//设置smtp服务器地址 
            props.put("mail.smtp.auth", "true");//设置服务器smtp需要验证 
            Session session = Session.getInstance(props, null);//创建新邮件并群发 
            //Session session = Session.getDefaultInstance(props); 
            //session.setDebug(true); 
            MimeMessage message = new MimeMessage(session);//创建过程对象 
            message.setFrom(new InternetAddress(getFromAddr())); 
           
            message.addRecipient(Message.RecipientType.TO,new InternetAddress(getToAddr())); 
            message.setSubject(getTitle());//设置主题 
            Multipart multipart = new MimeMultipart(); 
            BodyPart contentPart = new MimeBodyPart(); 
            contentPart.setContent(this.getSendtext(), "text/html;charset=GBK");//设置信件内容 
            multipart. addBodyPart(contentPart); 
            if(getAttachPath() != null && getAttachName() != null){ 
                BodyPart attachmentPart= new MimeBodyPart(); 
    //            DataSource source = new FileDataSource(getAttachPath());            
    //            attachmentPart.setDataHandler(new DataHandler(source)); 
               BASE64Encoder enc = new BASE64Encoder(); 
                attachmentPart.setFileName("=?GBK?B?"+enc.encode(getAttachName().getBytes())+"?="); 
                multipart.addBodyPart(attachmentPart); 
            } 
            message.setContent(multipart); 
            message.saveChanges(); 
            Transport transport = session.getTransport("smtp"); 
            transport.connect(host, getUsername(), getPassword()); 
            transport.sendMessage(message, message.getAllRecipients()); 
            transport.close(); 
        } 
        /** 
         * 群发邮件 
         * @throws Exception 
         */ 
        public void sendMails() throws Exception{ 
        
            Properties props = new Properties();//创建属性对象 
            props.put("mail.smtp.host", getHost());//设置smtp服务器地址 
            props.put("mail.smtp.auth", "true");//设置服务器smtp需要验证 
            Session session = Session.getInstance(props, null);//创建新邮件并群发 
            //Session session = Session.getDefaultInstance(props); 
            //session.setDebug(true); 
            MimeMessage message = new MimeMessage(session);//创建过程对象 
            message.setFrom(new InternetAddress(getFromAddr()));//设置发送邮件地址 
            message.setSentDate(new Date());//设置时间 
            InternetAddress[] address = new InternetAddress[this.getMutliTo().length]; //群发地址 
            for(int i = 0; i < this.getMutliTo().length; i++) { //循环发送 
            address[i] = new InternetAddress((this.getMutliTo())[i]); 
           } 
         message.setRecipients(Message.RecipientType.TO, address); 
           // message.addRecipient(Message.RecipientType.TO,new InternetAddress(getToAddr())); 
            message.setSubject(getTitle());//设置主题 
            Multipart multipart = new MimeMultipart(); 
            BodyPart contentPart = new MimeBodyPart(); 
            contentPart.setContent(this.getSendtext(), "text/html;charset=GBK");//设置信件内容 
            multipart. addBodyPart(contentPart); 
            if(getAttachPath() != null && getAttachName() != null){ 
                BodyPart attachmentPart= new MimeBodyPart(); 
    //            DataSource source = new FileDataSource(getAttachPath()); 
    //            attachmentPart.setDataHandler(new DataHandler(source)); 
               BASE64Encoder enc = new BASE64Encoder(); 
                attachmentPart.setFileName("=?GBK?B?"+enc.encode(getAttachName().getBytes())+"?="); 
                multipart.addBodyPart(attachmentPart); 
            } 
            message.setContent(multipart); 
            message.saveChanges(); 
            Transport transport = session.getTransport("smtp"); 
            transport.connect(host, getUsername(), getPassword()); 
            transport.sendMessage(message, message.getAllRecipients()); 
            transport.close(); 
        }     private String host = null; //邮件服务器 
        private String fromAddr = null; //发送邮件地址 
        private String toAddr = null; //接收邮件地址 
        private String username = null; //发送邮件用户名 
        private String password = null; //发送邮件密码 
        private String title = null; //邮件标题 
        private String attachPath = null; //邮件附件路径 
        private String attachName = null; //邮件附件名 
        private String sendtext = null; //邮件内容 
        private String[] MutliTo = null; //群发用户 
        public String[] getMutliTo() { 
    return MutliTo; 
    } public void setMutliTo(String[] mutliTo) { 
    MutliTo = mutliTo; 
    } public String getSendtext() { 
    return sendtext; 
    } public void setSendtext(String sendtext) { 
    this.sendtext = sendtext; 
    } public String getHost() { 
            return host; 
        }     public void setHost(String host) { 
            this.host = host; 
        }     public String getFromAddr() { 
            return fromAddr; 
        }     public void setFromAddr(String fromAddr) { 
            this.fromAddr = fromAddr; 
        }     public String getToAddr() { 
            return toAddr; 
        }     public void setToAddr(String toAddr) { 
            this.toAddr = toAddr; 
        }     public String getUsername() { 
            return username; 
        }     public void setUsername(String username) { 
            this.username = username; 
        }     public String getPassword() { 
            return password; 
        }     public void setPassword(String password) { 
            this.password = password; 
        }     public String getTitle() { 
            return title; 
        }     public void setTitle(String title) { 
            this.title = title; 
        }     public String getAttachPath() { 
            return attachPath; 
        }     public void setAttachPath(String attachPath) { 
            this.attachPath = attachPath; 
        }     public String getAttachName() { 
            return attachName; 
        }     public void setAttachName(String attachName) { 
            this.attachName = attachName; 
        } 

    邮件发送简单设计就是这样了,LZ得下载一些javamail的jar包,这个不难。
      

  5.   

    张孝祥的Java邮件开发  可以看着参考下,适合新手视频学习,不过我是老连接不上服务器
      

  6.   

    http://download.csdn.net/source/2781963
    前不久写了个玩的,内含源码,用quaqua改善了下外观
      

  7.   

        public void run() {
                messageEdit(m, mailItem);
                mailItem.setMailID(receiveMailId);
                Part p = m;
                // マルチパート解析
                partSet(p, mailItem);
                }
        /**
         * メッセージに含まれるヘッダー情報を取得編集する。
         * @param message Message
         * @param mailItem 編集対象
         * @throws MessagingException MessagingException
         * @throws SystemException SystemException
         * @throws UnsupportedEncodingException UnsupportedEncodingException
         * @throws GenericException GenericException
         */
        private void messageEdit(Message message, MailItem mailItem) throws MessagingException, SystemException,
            UnsupportedEncodingException, GenericException {
            MimeMessage mimeMessage = (MimeMessage)message;
            // メッセージ番号
            mailItem.setMessageNo(mimeMessage.getMessageNumber());
            // 送信日時
            mailItem.setSentDate(mimeMessage.getSentDate());
            // 受信日時
            mailItem.setReceivedDate(DateUtil.getSysdate());
            // メール名
            mailItem.setSubject(MimeUtility.decodeText(mimeMessage.getSubject()));
            // メールサイズ
            mailItem.setSize(mimeMessage.getSize());
            // メールタイプ
            mailItem.setContentType(mimeMessage.getContentType());
            // 読取フラグ
            Flags flags = message.getFlags();
            ArrayList< String > userFlg1 = new ArrayList< String >();
            String[] userFlg = flags.getUserFlags();
            if (null != userFlg) {
                for (int i = 0; i < userFlg.length; i++) {
                    userFlg1.add(userFlg[i]);
                }
            }
            mailItem.setUserFlg(userFlg1);
            ArrayList< String > from1 = new ArrayList< String >();
            // Fromアドレス
            if (null != mimeMessage.getFrom()) {
                for (Address a : mimeMessage.getFrom()) {
                    from1.add(MimeUtility.decodeText(a.toString()));
                }
            }
            mailItem.setFrom(from1);
            // Fromアドレス「@」以後
            String domain = mailItem.getFrom().get(0).split("@")[1];
            // ドメインからキャリアコードを取得する。
            GMMDomianDao gmmdomianDao = (GMMDomianDao)BatchCommon.getContainer().getComponent("GMMDomianDao");
            // ドメイン名がNULLの場合
            if (StringUtil.isEmpty(domain)) {
                throw new GenericException(Constants.MESSAGE_APPLICATION_COMMON, "COMMON.E044", "");
            }
            domain = domain.substring(0, domain.length() - 1);
            // キャリアコード取得
            String replytoAddressG = gmmdomianDao.getCarrierCd(domain);
            // キャリアコードを取得する。
            if (!StringUtil.isEmpty(replytoAddressG)) {
                mailItem.setCarrierCd(replytoAddressG);
            } else {
                // PCキャリアコード
                SystemPropertiesManager systemPropertiesManager = SystemPropertiesManager.getInstance();
                // PCキャリアコード取得
                replytoAddressG = systemPropertiesManager.getProperties(Constants.PC_CARRIER_CD);
                // キャリアコード
                mailItem.setCarrierCd(replytoAddressG);
            }
            ArrayList< String > replyTo1 = new ArrayList< String >();
            // ReplyToアドレス
            if (null != mimeMessage.getReplyTo()) {
                for (Address a : mimeMessage.getReplyTo()) {
                    replyTo1.add(MimeUtility.decodeText(a.toString()));
                }
            }
            mailItem.setReplyTo(replyTo1);
            ArrayList< String > to1 = new ArrayList< String >();
            // Toアドレス
            if (null != mimeMessage.getRecipients(Message.RecipientType.TO)) {
                for (Address a : mimeMessage.getRecipients(Message.RecipientType.TO)) {
                    to1.add(MimeUtility.decodeText(a.toString()));
                }
            }
            mailItem.setTo(to1);
            ArrayList< String > cc1 = new ArrayList< String >();
            // Ccアドレス
            if (null != mimeMessage.getRecipients(Message.RecipientType.CC)) {
                for (Address a : mimeMessage.getRecipients(Message.RecipientType.CC)) {
                    cc1.add(MimeUtility.decodeText(a.toString()));
                }
            }
            mailItem.setCc(cc1);
            ArrayList< String > bcc1 = new ArrayList< String >();
            // Bccアドレス
            if (null != mimeMessage.getRecipients(Message.RecipientType.BCC)) {
                for (Address a : mimeMessage.getRecipients(Message.RecipientType.BCC)) {
                    bcc1.add(MimeUtility.decodeText(a.toString()));
                }
            }
            mailItem.setBcc(bcc1);    }    /**
         * メールに含まれるメッセージや添付ファイルを取得する。
         * @param p Part
         * @param mailItem メールヘッダー情報
         * @throws MessagingException MessagingException
         * @throws IOException IOException
         */
        public void partSet(Part p, MailItem mailItem) throws MessagingException, IOException {
            MailContent mailContent = new MailContent();
            String disp = "";
            disp = p.getDisposition();
            // マルチパートの場合
            if (p.isMimeType("multipart/*")) {
                Multipart mp = (Multipart)p.getContent();
                int count = mp.getCount();
                for (int i = 0; i < count; i++) {
                    partSet(mp.getBodyPart(i), mailItem);
                }
                return;
                // メッセージの場合
            } else if (p.isMimeType("message/rfc822")) {
                partSet((Part)p.getContent(), mailItem);
                return;
            } else if (p.isMimeType("text/*")) {
                if (disp != null && disp.equalsIgnoreCase(Part.ATTACHMENT)) {
                    // ファイル名
                    mailContent.setFileName(p.getFileName());
                    // 添付フラグ
                    mailContent.setAttachmentFlg(true);
                    // 添付計数
                    iCount = iCount + 1;
                    mailContent.setFileID(iCount);
                    // 添付サイズ
                    mailContent.setSize(p.getSize());
                }
                // コンテンツタイブ
                mailContent.setContentType(p.getContentType());
                // コンテンツ
                mailContent.setContent(p.getContent().toString());
                ByteArrayOutputStream os = new ByteArrayOutputStream();
                try {
                    p.writeTo(os);
                    // コンテンツバイナリ
                    mailContent.setContentBinary(os.toByteArray());
                } catch (IOException e) {
                    e.printStackTrace();
                    logger.error(e);
                }
                // メール内容
                mailItem.getMailContents().add(mailContent);
                return;
            }
            // 添付ファイルの場合
            if (disp == null || disp.equalsIgnoreCase(Part.ATTACHMENT)) {
                // 添付計数
                iCount = iCount + 1;
                // 添付ファイルフラグ
                mailContent.setContentBinaryFlg(true);
                // コンテンツID取得
                MimeBodyPart mimeBodyPart = (MimeBodyPart)p;            
                if (!StringUtil.isEmpty(mimeBodyPart.getContentID())) {
                    String contentID = mimeBodyPart.getContentID();
                    if (contentID.startsWith("<") && contentID.endsWith(">")) {
                        contentID = contentID.substring(1, contentID.length() - 1);
                    }
                    mailContent.setContentId(contentID);
                }
                // ファイル名
                mailContent.setFileName(p.getFileName());
                if (mailContent.getFileName() != null) {
                    mailContent.setFileName(MimeUtility.decodeText(mailContent.getFileName()));
                } else {
                    mailContent.setFileName("");
                }
                ByteArrayOutputStream os = new ByteArrayOutputStream();
                p.writeTo(os);
                // コンテンツバイナリ
                mailContent.setContentBinary(os.toByteArray());
                // コンテンツタイブ
                mailContent.setContentType(p.getContentType());
                // 添付フラグ
                mailContent.setAttachmentFlg(true);
                // 添付番号
                mailContent.setFileID(iCount);
                // 添付サイズ
                mailContent.setSize(p.getSize());
                // メール内容
                mailItem.getMailContents().add(mailContent);
            }    }
      

  8.   

    上面是我写的一部分,是后台处理。主要就这两个方法。
    和邮箱连接部分没有,上面就是对于收mail的解析。