日期:2014-05-20  浏览次数:20651 次

java mail时,设置邮件附件和邮件正文冲突
Java code

MimeBodyPart bodyPart = new MimeBodyPart();
if (sMailBody != null) {
    bodyPart.setContent(sMailBody.toString(),
        "text/html;charset=utf-8");                
    }
if (null != sAttachPath) {
    File file = new File(sAttachPath);
    FileDataSource fds = new FileDataSource(file);
    bodyPart.setDataHandler(new DataHandler(fds));
    bodyPart.setFileName(fds.getName());
    mp.addBodyPart(bodyPart);
}



当执行到bodyPart.setContent时,成功将正文设置成输入的内容,但是执行bodyPart.setDataHandler后,之前设置的正文变成null,同时添加附件成功。

debug之后发现:两个操作都会设置MimeBodyPart DataHandler属性,导致两个操作冲突。也就是说:正文和附件都被存储在DataHandler的属性中,于是后面的操作会将前面操作设置的DataHandler重置,导致问题出现。

请问怎么同时添加附件的同时,填写邮件正文,使两个操作互补影响?请直接上代码~

------解决方案--------------------
引用
你的代码问题出在 邮件正文和附件都用了一个对象。。
MimeBodyPart bodyPart = new MimeBodyPart();

所以会被覆盖掉。。。

重新为附件new一个对象一起添加到Multipart就行了