2016-09-16 63 views
0

我试图在电子邮件中使用JavaMail APi像here一样在电子邮件中嵌入链接。 这是我的代码:在电子邮件中嵌入使用JavaMail附加的文件中的链接不起作用

MimeMultipart multipart = new MimeMultipart("related"); 
 

 
BodyPart messageBodyPart = new MimeBodyPart(); 
 
String attachment = "/path/test.pdf"; 
 
File fAtachh = new File(attachment); 
 

 
String htmlText = "<a href='cid:file'>test.pdf</a>"; 
 
messageBodyPart.setContent(htmlText, "text/html"); 
 
multipart.addBodyPart(messageBodyPart); 
 

 
MimeBodyPart messageBodyPartAttach = new MimeBodyPart(); 
 

 
try { 
 
\t messageBodyPartAttach.attachFile(fAtachh); 
 
} catch (IOException e) { 
 
\t logger.info("Exception" + e.getMessage()); 
 
} 
 

 
messageBodyPartAttach.setContentID("<file>"); 
 

 
multipart.addBodyPart(messageBodyPartAttach); 
 

 
message.setContent(multipart);

的问题是,链接不起作用:

ErrorLink

如果改变最后的代码:

MimeMultipart multipart = new MimeMultipart("related"); 
 

 
MimeBodyPart messageBodyPart = new MimeBodyPart(); 
 

 
String attachment = "/path/test.pdf"; 
 
String htmlText = "<a href='cid:file'>test.pdf</a>"; 
 

 
messageBodyPart.setContent(htmlText, "text/html"); 
 
multipart.addBodyPart(messageBodyPart); 
 

 
MimeBodyPart messageBodyPartAttach = new MimeBodyPart(); 
 
DataSource fds = new FileDataSource 
 
\t   (attachment); 
 
messageBodyPartAttach.setDataHandler(new DataHandler(fds)); 
 
messageBodyPartAttach.setHeader("Content-ID","<file>"); 
 

 
multipart.addBodyPart(messageBodyPartAttach); 
 

 
message.setContent(multipart);

作品链接,但文件名和扩展名是错误的:

WrongFileName

我试图通过方法来更改文件名:

messageBodyPartAttach.setFileName("test.pdf");

但是如果我设置了文件名,那么li nk不像第一个代码那样工作。

有什么建议吗?

谢谢!

回答

0

attachFile方法设置文件名并将Content-Disposition设置为ATTACHMENT。在多部分/相关消息中,您可能不希望这些消息被设置,尽管它可能取决于您用于显示消息的邮件阅读器。

使用setContentID方法和使用setHeader方法与“Content-ID”之间应该没有功能上的不同。

通常使用多部分/相关消息来允许html部分引用也包含在消息中的图像部分,并与html部分一起显示。可能没有邮件阅读器将显示与html内联的pdf文件。

也许问的问题是,你究竟想要完成什么?

如果您只是希望PDF文件以正确的文件名显示,然后用户可以点击保存或查看,您应该使用(默认)多部分/混合而不是多部分/相关。我不确定有一种好的方法可以将链接嵌入到html文本中的附件中。如果您可以使用其他邮件程序创建此类消息,则可以检查该消息的结构并使用JavaMail复制它。

+0

我试图完成将正文消息中附加的文档链接而不显示文件的内容。 我已将Content-Disposition设置为INLINE,但不起作用。 无论如何,我同意你的意见。在HTML文本中附加文件似乎不是一个好主意。大多数电子邮件提供商可能会将该文件解释为对系统有危险。 非常感谢。 –

相关问题