private MimeMessage createMessage() throws MessagingException {        MimeMessage msg = new MimeMessage(session);
        Multipart mp = new MimeMultipart();
        msg.setFrom(new InternetAddress(fromMailaddr));
        InternetAddress[] toAddresses = InternetAddress.parse(tomailAddr) ;
        InternetAddress[] bccAddresses = InternetAddress.parse(bccmailAddr);
        InternetAddress[] ccAddresses = InternetAddress.parse(ccmailAddr);
        msg.setRecipients(Message.RecipientType.CC,ccAddresses );
        msg.setRecipients(Message.RecipientType.TO,toAddresses );
        msg.setRecipients(Message.RecipientType.BCC,bccAddresses );
        for(java.util.Iterator iter =mailHead.keySet().iterator() ;iter.hasNext() ;){
            String name = (String)iter.next() ;
            msg.addHeader(name ,mailHead.getProperty(name) ) ;        }
            if(subject==null) subject = "No Subject";
           msg.setSubject(subject);
           msg.setSentDate(new Date());
           BodyPart messageBodyPart = new MimeBodyPart();
           messageBodyPart.setContent(body,"text/html; charset=gb2312");
           MimeMultipart multipart = new MimeMultipart();
           messageBodyPart.setHeader("Content-Transfer-Encoding","8bit");
           multipart.addBodyPart(messageBodyPart);
           msg.setContent(multipart);
           return msg;
    }

解决方案 »

  1.   

    void jButton8_actionPerformed(ActionEvent e) {
           try
             {//此段代码用来发送带有html信息的邮件
                Properties props = new Properties();
                Authenticator auth = new Email_Autherticator();
                props.put("mail.smtp.host",host);
                props.put("mail.smtp.auth","true");
                Session session = Session.getDefaultInstance(props,auth);
                MimeMessage message = new MimeMessage(session);
              //设置邮件正文
                String htmltext="<h1>hello</h1>"+"<a href=\"http://www.sina.com.cn\" target=\"_blank\">click me please!</a>";
                message.setContent(htmltext,"text/html");//text/plain设置邮件的格式因为是带有html文档的,所以用text/html格式            message.setSubject(mail_subject);
             //   message.setText(mail_body);在使用message.setContent()时候,好象不能用message.setText()
                message.setHeader(mail_head_name,mail_head_value);
                message.setSentDate(new Date());
                Address address = new InternetAddress(mail_from,"sunxiaoming");
                message.setFrom(address); 
                Address toAddress = new InternetAddress(mail_to);
                message.addRecipient(Message.RecipientType.TO,toAddress);
                Transport.send(message);
                System.out.println("send ok!");
             }
           catch(Exception ex)
             {
                System.out.println("faild"+ex);
             }  }  void jButton9_actionPerformed(ActionEvent e) {
           try
             {//此段代码用来发送带有图片的邮件
                String file = "./20020423/test.gif";
                Properties props = new Properties();
                Authenticator auth = new Email_Autherticator();            props.put("mail.smtp.host",host);
                props.put("mail.smtp.auth","true");
                Session session = Session.getDefaultInstance(props,auth);
                MimeMessage message = new MimeMessage(session);            message.setSubject("Embedded Image");
                Address address = new InternetAddress(mail_from,"sunxiaoming");
                message.setFrom(address); 
                Address toAddress = new InternetAddress(mail_to);
                message.addRecipient(Message.RecipientType.TO,toAddress);
                message.setHeader(mail_head_name,mail_head_value);
                message.setSentDate(new Date());            BodyPart messageBodyPart = new MimeBodyPart();
                String htmlText = "<h1><hello></h1>"+"<img src=\"cid:memememe\">";//加入图片
                messageBodyPart.setContent(htmlText,"text/html");
             //原理同发送附件一样,将邮件看成有多个部分组成的,先设置每一个部分,然后再全部将它们合起来即可。
                //Create a related multi-part to combine the parts
                MimeMultipart multipart = new MimeMultipart("related");
                multipart.addBodyPart(messageBodyPart);            //Create part for the image
                messageBodyPart = new MimeBodyPart();            //Fetch the image and associate to part
                DataSource fds = new FileDataSource(file);
                messageBodyPart.setDataHandler(new DataHandler(fds));
                messageBodyPart.setHeader("Content-ID","memememe");            //Add part to multi-part
                multipart.addBodyPart(messageBodyPart);            //Associate multi-part with message
                message.setContent(multipart);            Transport.send(message);
                System.out.println("send ok!");
             }
           catch(Exception ex)
             {
                System.out.println("faild"+ex);
             }  }  void jButton7_actionPerformed(ActionEvent e) {
        try
         {//该程序用来接受带有html信息的邮件
           Properties props = System.getProperties(); 
           Authenticator auth = new Email_Autherticator();
           props.put("mail.smtp.host",host);
           props.put("mail.smtp.auth","true");
           Session session = Session.getDefaultInstance(props,auth);
           Store store = session.getStore("pop3");
           store.connect(host,username,password);    //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
           Folder folder = store.getFolder("INBOX");
           folder.open(Folder.READ_WRITE);
           Message message[] = folder.getMessages();       for (int i=0,n=message.length;i<n;i++)
    //         for (int i=0,n=1;i<n;i++)//only one letter received from inbox //for debug
             {
                String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
                String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
                System.out.println("From:"+out_from_person+"\t");
                System.out.println("Address:"+out_from_address+"\t");            String out_subject = message[i].getSubject();
                System.out.println("Subject:"+out_subject+"\t");            //获取邮件的信息,并且对其每一部分进行操作
                Part messagePart = message[i];
                Object out_content = messagePart.getContent();
                if (out_content instanceof Multipart)
                  {
                     messagePart = ((Multipart)out_content).getBodyPart(0);
                     System.out.println("[ Multipart Message ]");
                  }
                String out_content_type = messagePart.getContentType();
                System.out.println("CONTENT:"+out_content_type);            jEditorPane1.setText("");//将其显示在jEditorPanel上
                jEditorPane1.setContentType("text/html");
                jEditorPane1.setText((String)out_content);
                jEditorPane1.setEditable(false);/*
                if (out_content_type.startsWith("text/plain") || out_content_type.startsWith("text/html"))
                  {
                      InputStream ipstm = messagePart.getInputStream();
                      BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
                      String thisLine = bufreader.readLine();
                      while (thisLine != null)
                        {
                            System.out.println("thisLine: "+thisLine);
                            thisLine = bufreader.readLine();
                        }
                  }
    */
                System.out.println("------------------------------------------------------------");
                message[i].setFlag(Flags.Flag.DELETED,true);
             }
           folder.close(true);
           store.close();
         }
        catch(Exception ej2)
         {
            System.out.println(ej2);
         }  }
      

  2.   

    他们的太繁琐了,其实你只要用加上这个就可以了:
    ((Part)newMessage).setContent(text, "text/html;charset=gb2312");其它的不变,当时我做的时候,这个问题也困扰我不短时间!
    希望对你有用!
      

  3.   

    但是也必须对正文进行设置,你上面说的只是保证不出现乱码,并不能保证发出的信是html格式的。