我的问题是发送的时候 如果只有邮件内容没有附件的话 发送正常 但是如果有内容也有附件的时候 会把邮件的内容当做一个附件再加上要发送的附件发过去 接收的时候一个是要发送的附件 另一个是一个网页 打开的话显示的是邮件内容   不想让内容当做附件发过去 请指教  
List result = new ArrayList();
  final String mailuser = this.mailuser;                    final String password = this.password;              String userName = ""; String smtp = this.host;     String mailTo = this.mailTo;          Vector mailCC;      Vector mailBCC = this.mailBCC; String mailText = this.mailText; String mailSubject = this.mailSubject; Vector attachedFileList = this.attachedFileList; System.out.println(mailuser+"=="+password+"=="+smtp+"=="+mailBCC+"=="+mailText+"=="+mailSubject);
//获取系统Properties.
Properties props = new Properties(); 

//将SMTP服务器名添加到mail.smtp.host关键字的属性中
props.put("mail.smtp.host",smtp); 

props.put("mail.smtp.auth","true"); 

Multipart mPart = new MimeMultipart(); 

//创建PopupAuthenticator对象 获取PasswordAuthentication
PopupAuthenticator auth = new PopupAuthenticator(); 

////获取基于Properties Session对象.
  Session   session   =   Session.getDefaultInstance(props, 
                  new   Authenticator()   { 
                          protected   javax.mail.PasswordAuthentication   getPasswordAuthentication()   { 
                                  return   new   javax.mail.PasswordAuthentication(mailuser, 
                                   password); 
                          } 
                  }); 

//从Session创建一个MimeMessage.
MimeMessage message = new MimeMessage(session); 

//添加发送人的信息 可以显示发送名称
Address addressFrom=null;
if(!"".equals(userName)&&null!=userName){
 addressFrom = new InternetAddress(mailuser,MimeUtility.decodeText(userName)); 
}
else{
 addressFrom = new InternetAddress(mailuser);
}
Address addressTo=null;
if(!"".equals(mailTo)&&null!=mailTo){
addressTo = new InternetAddress(mailTo); 
}
//设置消息主题. 
message.setSubject(mailSubject,"GB2312"); 

if (attachedFileList != null) { 
BodyPart mBodyPart=null;
            for (int i =0;i<attachedFileList.size();i++) {              mBodyPart = new MimeBodyPart(); 
                String fileNamePath = (String) attachedFileList.get(i); 
                String[] fileNames=fileNamePath.split("/");
                String fileName = fileNames[fileNames.length-1]; //获取附件名字
                String filePath = fileNamePath.substring(0,fileNamePath.length()-fileName.length());//获取附件路径
                FileDataSource fds = new FileDataSource(new File(filePath,MimeUtility.decodeText(fileName)));                mBodyPart.setDataHandler(new DataHandler(fds));                 /*
                 * 设置邮件名字 需进行转码 
                 * 原因是在MIME的相应规范中(RFC2047等)说明了附件标题必须是US-ASCII字符, 
                 * 所以在发送中文标题的附件时需要编码成US-ASCII字符
                 * 有两种编码方式: B (BASE64), Q (Quoted-Printable)
                */
                mBodyPart.setFileName(new String(fileName.getBytes(), "ISO8859-1")); 
 
                mPart.addBodyPart(mBodyPart); 
                
            }         }

BodyPart mbp = new MimeBodyPart();

//设置消息内容. 
//mbp.setText(mailText);
mbp.setDataHandler(new DataHandler(new String(mailText.getBytes(),"GBK"),"text/html;charset=gb2312"));

//添加内容主体
mPart.addBodyPart(mbp);
//设置发送时间
message.setSentDate(new Date());

message.setContent(mPart);
//设置消息来源. 
message.setFrom(addressFrom); 

//设置发送人域.
if(!"".equals(addressTo)&&null!=addressTo){
message.addRecipient(Message.RecipientType.TO,addressTo);
}

//设置抄送人   
//        if (!"".equals(mailCC)) {   
//         for (Enumeration fileList = attachedFileList.elements(); fileList.hasMoreElements();) { 
//                String mailCCName = (String) fileList.nextElement(); 
//                message.setRecipients(Message.RecipientType.CC,   
//                                  InternetAddress.parse(mailCCName));   
//         }
//        }   
        //设置暗送人   
        if (!"".equals(mailBCC)&&null!=mailBCC&&0!=mailBCC.size()) {
         String mailBCCName=null; 
         for (int i=0;i<mailBCC.size();i++) { 
                 mailBCCName = mailBCCName+(String)mailBCC.get(i)+",";
          }
         mailBCCName=mailBCCName.substring(0, mailBCCName.length()-1);
          message.setRecipients(Message.RecipientType.BCC,    
                     InternetAddress.parse(mailBCCName)); 
          System.out.println(mailBCCName);
        }   

message.saveChanges(); 
Transport transport = session.getTransport("smtp"); 
transport.connect(host, mailuser,password); 

//发送消息. 
transport.send(message); 

transport.close(); 

解决方案 »

  1.   

    BodyPart relatedPart = new MimeBodyPart();
    Multipart relatedMultipart = new MimeMultipart("related");
    BodyPart alternativePart = new MimeBodyPart();
    Multipart alternativeMultipart = new MimeMultipart("alternative");alternativeMultipart.addBodyPart(msgTextPart);
    alternativeMultipart.addBodyPart(msgHTMLPart);
    alternativePart.setContent(alternativeMultipart);LZ。。用上上面几句,再配合邮件MIME格式,你就懂了
      

  2.   


    MIME格式 什么完了?