我正在使用Java郵件1.4.6來讀取和解析Gmail郵箱的郵件。但問題是,當我綁解析emaill主題(例如主題字符串「建設失敗詹金斯:appanalyti X»appanalyti X#51" )的聲明使用java郵件在java中解析電子郵件主題的錯誤
String subjectStr=(String) mimeMessage.getSubject();
我越來越
subjectStr as「Jenkins的構建失敗:appanaltix»appanal」而不是 「Jenkins的構建失敗:appanalyti x»appanalyti x#51」。
我可以知道我哪裏出錯了嗎?需要它來解碼主題串
代碼:
public boolean parseEmailSubject(String host,String userName,String password,String configurationStringToCheck,String saveDirectory){
....
Session session = Session.getDefaultInstance(properties);
try {
IMAPSSLStore store = (IMAPSSLStore)session.getStore(IMAP);
store.connect(host, userName, password) ;
Folder folderInbox =store.getFolder(IMAP_FOLDER);
folderInbox.open(Folder.READ_ONLY);
Message[] arrayMessages = folderInbox.getMessages();
for (int i = 0; i < arrayMessages.length; i++) {
MimeMessage message = (MimeMessage) arrayMessages[i];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
message.writeTo(bos);
bos.close();
SharedByteArrayInputStream bis =new SharedByteArrayInputStream(bos.toByteArray());
MimeMessage cmsg = new MimeMessage(session, bis);
bis.close();
String megSubject = cmsg.getSubject();
if(megSubject.contains(configurationStringToCheck)){
String contentType = cmsg.getContentType();
if (contentType.contains(IMAP_CONTENT_TYPE)) {
Multipart multiPart = (Multipart) cmsg.getContent();
int numberOfParts = multiPart.getCount();
for (int partCount = 0; partCount < numberOfParts; partCount++) {
MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
String fileName = part.getFileName();
part.saveFile(saveDirectory + File.separator + fileName);
}
}
}
return true;
}
}
folderInbox.close(false);
store.close();
}catch (Exception e) {
}
}
電子郵件樣本 (以下主題行) 構建失敗詹金斯:appanalyti X»appanalyti X#51
(下面身體部分) 變更:
< === [JENKINS遠程處理CAPAC ITY] ===>頻道開始 log4j:WARN記錄器(org.apache.commons.beanutils.converters.BooleanConverter)找不到appender。 log4j:WARN請正確初始化log4j系統。
我們可以看到您的代碼和電子郵件示例(沒有任何私人數據)嗎? – Djon
我編輯了上面的代碼並添加了郵件樣本 – user2215139