java.mail回复电子邮件并以字符串形式获取内容
我想回复一封电子邮件,并将我的内容作为字符串显示在我的JSF页面中。。。 但我从函数(字符串getMessageContent)中仅获得以下内容: javax.mail.internet。MimeMultipart@48bb9483 以下是我的电子邮件回复代码:java.mail回复电子邮件并以字符串形式获取内容,java,email,Java,Email,我想回复一封电子邮件,并将我的内容作为字符串显示在我的JSF页面中。。。 但我从函数(字符串getMessageContent)中仅获得以下内容: javax.mail.internet。MimeMultipart@48bb9483 以下是我的电子邮件回复代码: public EmailHelperClass answerEmail(Message message, EmailSetting emailSetting) throws MessagingException, IOException
public EmailHelperClass answerEmail(Message message, EmailSetting emailSetting) throws MessagingException, IOException {
Message newReplyMessage = message.reply(true);
EmailHelperClass email = new EmailHelperClass();
// FROM
email.setFrom(emailSetting.getSendAddress());
// TO
Address[] froms = message.getFrom();
String from = froms == null ? null : ((InternetAddress) froms[0]).getAddress();
List<String> toList = new ArrayList<String>();
toList.add(from);
email.setToList(toList);
email.setMimeType("text/html");
email.setSubject("RE: " + newReplyMessage.getSubject());
// Create your new message part
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Oiginal message:nn");
// Create a multi-part to combine the parts
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
// Create and fill part for the forwarded content
messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(message.getDataHandler());
// Add part to multi part
multipart.addBodyPart(messageBodyPart);
// Associate multi-part with message
newReplyMessage.setContent(multipart);
email.setText(emailReaderServiceBean.getMessageContent(newReplyMessage));
return email;
}
public EmailHelper类answerEmail(消息消息,EmailSetting EmailSetting)抛出MessagineException,IOException{
Message newReplyMessage=Message.reply(true);
EmailHelperClass email=新的EmailHelperClass();
//从
email.setFrom(emailSetting.getSendAddress());
//到
地址[]froms=message.getFrom();
字符串from=froms==null?null:((InternetAddress)froms[0]).getAddress();
List toList=new ArrayList();
toList.add(from);
email.setToList(toList);
email.setMimeType(“text/html”);
email.setSubject(“RE:+newReplyMessage.getSubject());
//创建新的消息部分
BodyPart messageBodyPart=新的MimeBodyPart();
messageBodyPart.setText(“原始消息:nn”);
//创建多个零件以组合这些零件
Multipart Multipart=新的MimeMultipart();
multipart.addBodyPart(messageBodyPart);
//为转发的内容创建和填充部分
messageBodyPart=新的MimeBodyPart();
messageBodyPart.setDataHandler(message.getDataHandler());
//将零件添加到多零件
multipart.addBodyPart(messageBodyPart);
//将多部分与消息关联
newReplyMessage.setContent(多部分);
setText(emailReaderServiceBean.getMessageContent(newReplyMessage));
回复邮件;
}
注:
EmailSetting->包括连接到服务器的信息(用户名、密码等)
EmailHelperClass包括:
private String from;
private String[] to;
private String[] cc;
private String[] bcc;
private List<String> toList;
private List<String> ccList;
private List<String> bccList;
private String subject;
private String text;
private String mimeType;
private List<EmailAttachment> attachments = new ArrayList<EmailAttachment>();
来自的私有字符串;
私有字符串[]到;
私有字符串[]cc;
私有字符串[]密件抄送;
私人名单收费表;
私人名单;
私人名单;
私有字符串主题;
私有字符串文本;
私有字符串mimeType;
私有列表附件=新的ArrayList();
以下是我返回内容的代码:
public String getMessageContent(Message message) throws MessagingException, IOException {
if (message == null)
return "";
try {
Object content = message.getContent();
if (content instanceof Multipart) {
StringBuffer messageContent = new StringBuffer();
Multipart multipart = (Multipart) content;
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart p = multipart.getBodyPart(i);
if (p.isMimeType("text/plain")) {
// messageContent.append(p.getContent().toString());
messageContent = new StringBuffer(p.getContent().toString());
}
if (p.isMimeType("text/html")) {
// messageContent.append(p.getContent().toString());
messageContent = new StringBuffer(p.getContent().toString());
}
}
return messageContent.toString();
}
return content.toString();
} catch (IOException e) {
} catch (Exception e) {
}
return "";
公共字符串getMessageContent(消息消息)抛出MessaginException,IOException{
如果(消息==null)
返回“”;
试一试{
对象内容=message.getContent();
if(多部分的内容实例){
StringBuffer messageContent=新建StringBuffer();
多部分多部分=(多部分)内容;
对于(int i=0;i
您的车身部件
是另一个多部件
(零件中的零件),因此您需要执行一些递归(或者如果您确定零件中零件的深度,请再次执行相同的控制,如下所示)
Multipart Multipart=((多部分)内容);
int parts=multipart.getCount();
对于(int j=0;jmaybe)您可能正在从错误的包导入Multipart
类…它应该是javax.mail.Multipart
中getMessageContent
中的if(Multipart的内容实例)
否,来自javax.mail.Multipart-还有其他想法吗?我已经发布了您问题的答案。您能评估和反馈吗
Multipart multipart = ((Multipart)content);
int parts = multipart.getCount();
for (int j=0; j<parts; ++j) {
MimeBodyPart part = (MimeBodyPart)multipart.getBodyPart(j);
if (part.getContent() instanceof Multipart) {
// part-within-a-part, do some recursion...
// recursion call
// or if you are sure this part's content contains no more parts then
Multipart multipart2 = ((Multipart)part.getContent());
int parts2 = multipart2.getCount();
for (int k=0; k<parts2; ++k) {
MimeBodyPart part2 = (MimeBodyPart)multipart2.getBodyPart(k);
String type = part2.getContentType();
// your logic
}
} else {
String type = part.getContentType();
// your logic