中文问题解决了
    String str = new String(content.getBytes("GB2312"),"8859_1");    messageBodyPart.setContent(str, "text/html");
就只有在html正文里加超连接的问题了

解决方案 »

  1.   

    中文问题处理方法和附件的问题看看我写的这段代码吧:        //带附件的要用到Multipart,
            Multipart multipart = new MimeMultipart();
            // Create the message part
            BodyPart messageBodyPart1 = new MimeBodyPart();
            // Fill the message
            //messageBodyPart1.setContent(mailContent,"text/html");
            messageBodyPart1.setText(mailContent);
            //显示html格式中文的关键地方
            if(!isNormalMail)
              messageBodyPart1.setHeader("Content-Type","text/html;charset=\"iso-8859-1\"");
            multipart.addBodyPart(messageBodyPart1);
            // 第二个part是附件
            BodyPart messageBodyPart2 = new MimeBodyPart();
            DataSource source = new FileDataSource(file);
            messageBodyPart2.setDataHandler(new DataHandler(source));
            messageBodyPart2.setFileName(file.getName());
            multipart.addBodyPart(messageBodyPart2);
            // Put parts in message
            msg.setContent(multipart);依此类推可以添加多个附件....
      

  2.   

    Bluecatr(蓝夜猫儿):
    我会加附件,但现在是要在htnl邮件的正文给加上附件的超连结
      

  3.   


    对 HTML 消息的处理 第 9 页(共9 页) 发送基于 HTML 文件格式消息的工作量比发送纯文本消息多,虽然不一定非要这些多余的工作量。如何选择完全取决于给定的请求。HTML 消息的发送: 
    若您所要做的全部事情是发送一份 HTML 文件的等价物作为消息,但让邮件阅读者为不能提取任何内嵌图像或相关片段而担心的话,可以使用 Message 的 setContent() 方法,把内容当作一个 String 传入,并将内容类型设置成 text/html。
    String htmlText = "<H1>Hello</H1>" +
      "<img src=\"http://www.jguru.com/images/logo.gif\">";
    message.setContent(htmlText, "text/html"));
    在接收端,如果您用 JavaMail API 提取消息,API 中没有内建的显示 HTML 消息的东西。 JavaMail API 只把它看成一串字节流。要显示 HTML 文件格式的消息,您必需使用 Swing JEditorPane 或其它第三方 HTML 格式查看器组件。
    if (message.getContentType().equals("text/html")) {
        String content = (String)message.getContent();
        JFrame frame = new JFrame();
        JEditorPane text = new JEditorPane("text/html", content);
        text.setEditable(false);
        JScrollPane pane = new JScrollPane(text);
        frame.getContentPane().add(pane);
        frame.setSize(300, 300);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.show();
    }
    在消息中引入图像: 
    另一方面,如果您想让 HTML 文件格式内容的消息完整(内嵌的图像作为消息的一部分),您必需把图像作为附件,并且用一个给定的 cid URL 引用图像,其中 cid 是图像附件 Content-ID 头的引用。嵌入图像的过程与附加文件到消息的过程非常相似,唯一的区别在于您必需通过设置 MimeMultipart 构造器中的子类型(或者说用 setSubType())告知 MimeMultipart 各个相关部件,并且将这个图像的 Content-ID 头设置成随机字符串,作为图像的 src 在 img 标记中使用。完整的演示如下。
    String file = ...;// Create the message
    Message message = new MimeMessage(session);// Fill its headers
    message.setSubject("Embedded Image");
    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO,
      new InternetAddress(to));// Create your new message part
    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);
      

  4.   

    正文中加上附件的超链接,也就是用html的语法在邮件正文中写东西,比如这个链接写在你的正文中了,那么当别人点击test.pdf后将去http://yourhost.yourdomain/test.pdf这个地方下载它<a href='http://yourhost.yourdomain/test.pdf'>test.pdf</a>
      

  5.   

    加超连接搞定了
    String content="<html><head><meta http-equiv=\"Content-Language\" content=\"zh-cn\">"
                   +"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">"
                   +"</head><body><p<a href=\"cid:msutil.jar\">这里</a></p></body></html>"
    …………………………………………
          messageBodyPart = new MimeBodyPart();
          String filename = "E:\\lib\\msutil.jar";
          DataSource source = new FileDataSource(filename);
          messageBodyPart.setDataHandler(new DataHandler(source));
          messageBodyPart.setHeader("Content-ID", "msutil.jar");
          messageBodyPart.setFileName("msutil.jar");
          multipart.addBodyPart(messageBodyPart);
      

  6.   

    在网页中输出中文。
    JAVA在网络传输中使用的编码是"ISO-8859-1",故在输出时需要进行转化,如:
    String  str="中文";
    str=new  String(str.getBytes("GB2312"),"8859_1");
    但如果在编译程序时,使用的编码是“GB2312”,且在中文平台上运行此程序,不会出现此问题,一定要注意。
    2、从参数中读取中文
    这正好与在网页中输出相反如:
    str=new  String(str.getBytes("8859_1"),"GB2312");
      

  7.   

    加超连接少写了一条,
          Multipart multipart = new MimeMultipart();
    改为
          Multipart multipart = new MimeMultipart("related");
    唉,100分啊,结果还是自己解决了。
    晕,没看到zealVampire的解答就给分了,他的也是我要的,但我从http://www.javaworld.com.tw/jute/post/view?bid=7&id=43267&sty=1&tpg=2&age=0
    这里找到了答案,就直接进来结贴,给分,申请faq,写这个帖子才发现zealVampire的回复,抱歉抱歉。