Файлы вложений, полученные из веб-почты, загружаются на наш компьютер и загружаются в Blobstore(позвонив в микросервис)
Store store = session.getStore("imaps");
store.connect(host, "username",
"password");//change the user and password accordingly
Folder folder = store.getFolder("inbox");
if (!folder.exists()) {
System.out.println("inbox not found");
System.exit(0);
}
folder.open(Folder.READ_ONLY);
Date today=new Date();
SearchTerm st = new ReceivedDateTerm(ComparisonTerm.EQ,today);
Message[] messages = folder.search(st);
for(int i=0;i<messages.length;i++)
{
String s1=messages[i].getSubject();
if(s1!=null&&s1!="")
{
String s2="EXT: FSG daily shipment information";
if(s1.equalsIgnoreCase(s2))
{
String contentType = messages[i].getContentType();
String messageContent = "";
// store attachment file name, separated by comma
String attachFiles = "";
if (contentType.contains("multipart")) {
// content may contain attachments
Multipart multiPart = (Multipart) messages[i].getContent();
int numberOfParts = multiPart.getCount();
for (int partCount = 0; partCount < numberOfParts; partCount++) {
MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
// this part is attachment
String fileName = part.getFileName();
attachFiles += fileName + ", ";
part.saveFile("C:/Users/rb842469/Documents/MailAttachments" + File.separator + fileName);
HttpClient client = new HttpClient();
PostMethod method = new PostMethod("https://dt-microservice-blobstore.run.aws-usw02-pr.ice.predix.io/uploadMultiBlob");
method.addParameter("file",fileName);
method.addParameter("directory","C:/Users/rb842469/Documents/MailAttachments");
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
client.getHostConfiguration().setProxy("ipaddress", port);
int statusCode = client.executeMethod(method);
byte[] responseBody = method.getResponseBody();
//Print the response
System.out.println(new String(responseBody));
}
}
}
Привет, я работаю над пакетом javax.mail для доступа к веб-почте или Outlook.
Здесь я могу загрузить вложения, присутствующие в письмах, которые отфильтрованы на основе условий поиска (мое условие поиска состоит в том, чтобы сообщения с сегодняшней датой были получены, а тема указана в коде).
Но после загрузки приложений я попытался загрузить файлы в blobstore, используя HttpClient и PostMethod. В коде, который я дал PostMethod(url), этот URL-адрес - мой URL-адрес микросервиса, полученный из службы predix blobstore service.
Так что после запуска кода я получаю
{"отметка времени":1476867898345,"статус":500,"ошибка":"Внутренняя ошибка сервера","исключение":"org.springframework.web.multipart.MultipartException","message":"Текущий запрос не является составной запрос "," путь ":"/uploadMultiBlob"}
Кто-нибудь может дать несколько советов по решению этой проблемы?
1 ответ
Одно место, которое я мог бы начать, это отделить проблему. Здесь вы выполняете две операции: 1) загрузить почтовое вложение и 2) загрузить в хранилище BLOB-объектов. Кроме того, каждый включает многокомпонентный объект, который может легко привести к путанице. Попробуйте каждый в отдельности во время тестирования, чтобы изолировать вашу проблему. Надеемся, что это даст вам простой и простой пример попытки загрузить файл в хранилище BLOB-объектов.
Получив это, похоже, вы пытаетесь выполнить многоэлементную загрузку, но не похоже, что вы предоставляете правильные многокомпонентные параметры, следовательно, получаете исключение. Вам следует просмотреть документы, чтобы узнать, не пропустили ли вы что-нибудь относительно того, как совершать REST-вызовы в службу: https://www.predix.io/docs.
Например, вы, кажется, отправляете файл и параметр каталога в своем вызове POST, но они не указаны в документации в качестве параметров для инициирования многоэтапной загрузки. Вы можете просто поставить объект вместо этого. Я также не вижу заголовка авторизации, который, как я ожидаю, будет необходим.
Надеюсь, это поможет вам начать. Возможно, вы также захотите взглянуть на некоторые примеры из blobstore и просто скопировать их, чтобы они соответствовали вашему случаю загрузки вложений электронной почты.