第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

MimeMessage.writeTo(OutputStream) 掛起

MimeMessage.writeTo(OutputStream) 掛起

森林海 2021-09-12 15:28:43
我正在嘗試通讀郵箱中的郵件,但是在將郵件內(nèi)容解析為 MimeMessage 的過程中,某些特定郵件使進(jìn)程掛起,它沒有顯示任何錯(cuò)誤消息,日志顯示程序在 MimeMessage.writeTo 步驟停止(OutputStream), 下面是實(shí)際代碼for (int n = message.length; i < n; i++)            {Log25.write("IMAPaccess", "getMessages", "start convert");                MimeMessage msg = (MimeMessage)message[i];                Log25.write("IMAPaccess", "getMessages", "A");                ByteArrayOutputStream bos = new ByteArrayOutputStream();                Log25.write("IMAPaccess", "getMessages", "B");                msg.writeTo(bos);                Log25.write("IMAPaccess", "getMessages", "C");                bos.close();                Log25.write("IMAPaccess", "getMessages", "start create bis");                SharedByteArrayInputStream bis = new SharedByteArrayInputStream(bos.toByteArray());                MimeMessage cmsg = new MimeMessage(session, bis);                bis.close();....下面是日志信息,它沒有顯示任何異常,但掛在“B”處,即“msg.writeTo(bos);”步驟中 在日志中Mon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     36:     [Ljavax.mail.internet.InternetAddress;@d522e24d nullMon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     36: From address length         1Mon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     36: From address        INFORMATION <info@funds.com>Mon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     complete for loop jMon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     start convertMon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     AMon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     BMon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     CMon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     start create bisMon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     start cmsg to mimeMessageMon Sep 10 09:44:41 UTC 2018    IMAPaccess      getMessages     content type: text/html;^M
查看完整描述

1 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

最終我放棄了轉(zhuǎn)換消息類型,如果它在轉(zhuǎn)換中掛起我直接讓for循環(huán)跳過并繼續(xù),這樣一些消息就被省略了。我認(rèn)為這無關(guān)緊要,因?yàn)槲野l(fā)現(xiàn)只有垃圾郵件才能使程序掛起。下面是代碼


for (int n = message.length; i < n; i++)

            {   

                Log25.write("IMAPaccess", "getMessages", "start convert");

                MimeMessage msg = (MimeMessage)message[i];


                ByteArrayOutputStream bos = new ByteArrayOutputStream();



                // MJN1 has some SPAM email cannot be converted, so use thread to do the conversion 

                final Runnable stuffToDo = new Thread() {

                      @Override 

                      public void run() { 

                          try {

                            Log25.write("IMAPaccess", "run", "write to MimeMessage");

                            msg.writeTo(bos);

                            Log25.write("IMAPaccess", "run", "wrote to MimeMessage");

                        } catch (IOException | MessagingException e) {

                            Log25.write("IMAPaccess", "run", (new StringBuilder()).append("error = ").append(e.getMessage()).toString());


                        }

                      }

                    };


                final ExecutorService executor = Executors.newSingleThreadExecutor();

                final Future future = executor.submit(stuffToDo);

                executor.shutdown(); // This does not cancel the already-scheduled task.


                // start the conversion and if the process hangs, the loop should skip and continue

                try { 

                  future.get(1, TimeUnit.SECONDS); 

                }

                catch (InterruptedException ie) { 

                    Log25.write("IMAPaccess", "getMessages", (new StringBuilder()).append("error = ").append(ie.getMessage()).toString());

                    continue;

                }

                catch (ExecutionException ee) { 

                    Log25.write("IMAPaccess", "getMessages", (new StringBuilder()).append("error = ").append(ee.getMessage()).toString());

                    continue;

                }

                catch (TimeoutException te) { 

                    Log25.write("IMAPaccess", "getMessages", (new StringBuilder()).append("error = ").append(te.getMessage()).toString());

                    continue;

                }

                catch(Exception e) {

                    Log25.write("IMAPaccess", "getMessages", (new StringBuilder()).append("error = ").append(e.getMessage()).toString());

                    continue;

                }

                if (!executor.isTerminated())

                    executor.shutdownNow();


                bos.close();

我使用線程和執(zhí)行程序來使掛起循環(huán)繼續(xù),這不是一件容易的事。


查看完整回答
反對(duì) 回復(fù) 2021-09-12
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)