Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2021, 08:40   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию Переписать код из Delphi в java

Добрый день.
Есть 100% работающий код почтового рор3 клиента на делфи, работает со всеми сервисами(ну кроме хугли), записывает письмо в ЕМЛ файл(вместе со всем что там есть), потом любой почтовый клиент(опера, муррзилла самтыберд и прочие) окрывает файл без проблем

версия Delphi, не все

Код:
try
    try
      POP3.Connect;   //аналог messages = Inbox.getMessages();

      MsgCnt:=POP3.CheckMessages;  (*проверка наличия писем на сервере*)     //ShowMessage(IntToStr(MsgCnt));
      if (MsgCnt > 0) then
      begin

        for I := 1 to MsgCnt do
        begin
          if aRtvMail then
          begin
            Msg.Clear;                     (*очистка накопителя писем*)
            fStream.Clear;
            POP3.Retrieve(I,Msg);

            Lst1.Add('<rowmail>');         (*ROW mail text*)
            Msg.SaveToStream(fStream);  //вот тут письмо отправляем в поток
            fStream.Position:=0;               // с позиции нуль
            Lst2.LoadFromStream(fStream);  // потом просто возвращаем в TStringList (аналог ArrayList<String> вроде бы?)
            Lst1.Add(Lst2.Text);                  // тут все письмецо в бинарном виде всовываем в строку
            Lst1.Add('</rowmail>'+sLineBreak);  // это просто разделитель между письмами
          end;

          if aDelMail then POP3.Delete(I);                 (*delete current mail*)
        end;

        aList.Assign(Lst1);  // это просто вывод массива строк вверх
      end
      else
      begin
        aList.Clear;
        aErrStr:='Mail Box is Empty';
      end;

      POP3.Disconnect;
      Result:=TRUE;
    except
      on E:EIdException do
      begin
        aList.Clear;
        aErrStr:=E.Message;
      end;
    end;
  finally
    FreeAndNil(fSSL);
    FreeAndNil(Lst1);
    FreeAndNil(Lst2);
    FreeAndNil(Msg);
    FreeAndNil(POP3);
    FreeAndNil(fStream);
  end;
end;
что то немного не понял как все это перевести в java
версия java

Код:
public static ArrayList<String> getMail(String pop3Host, String login, String password) {
        try {
            Message[] messages = null;
            ArrayList<String> rowMail = new ArrayList<String>();
            ByteArrayOutputStream stream = new ByteArrayOutputStream();

            // create properties field
            Properties props = new Properties();
            props.put("mail.store.protocol", "pop3s");
            props.put("mail.pop3s.host", pop3Host);
            props.put("mail.pop3s.ssl.enable", "true");
            props.put("mail.pop3s.ssl.trust", "*");
            props.put("mail.pop3s.port", "995");
            Session emailSession = Session.getDefaultInstance(props);
            emailSession.setDebug(false);

            // create the POP3 store object and connect with the pop server
            Store store = emailSession.getStore("pop3s");
            store.connect(pop3Host, login, password);

            // create the folder object and open it
            Folder Inbox = store.getFolder("INBOX");
            Inbox.open(Folder.READ_WRITE);  // (Folder.READ_WRITE READ_ONLY)

            // retrieve the messages from the folder in an array and print it
            // messages = Inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false));
            messages = Inbox.getMessages();  // ALL

            if (messages.length > 0) {

                for (Message message : messages) {
                    if (true) {
                        rowMail.add("<rowmail>");
                        message.writeTo(stream);   // тут скинули письмо в поток? вроде нормально, компиллятор не гавкает
                        ВОПРОС! что тут?
						надо вернуть данные из потока в виде строки и записать в rowMail.add()
                        если кто знает подскажите, а то там много всякого с потоками и прочим
						
                        rowMail.add("</rowmail>");
                    }
                }
            } else {
                 // это так
            }

            Inbox.close(false);
            store.close();
            return rowMail;

        } catch (NoSuchProviderException e) {
            e.printStackTrace();
            // log
        } catch (MessagingException e) {
            e.printStackTrace();
            // log
        } catch (IOException e) {
            e.printStackTrace();
            // log
        } catch (Exception e) {
            e.printStackTrace();
            // log
        }
        return null;  //плохо конечно но компилятор требует вставит сюда возврат, а что еще?

    }
Заранее спасибо за ответы по ЗАДАННЫМ вопросам
Pcrepair вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать код с Python на JAVA Nastya2018 Общие вопросы по Java, Java SE, Kotlin 0 06.08.2018 07:34
переписать код с С++ на JAVA MartinLucas Общие вопросы C/C++ 0 27.10.2016 22:57
Переписать приложение Delphi на Java zakaso Общие вопросы по Java, Java SE, Kotlin 1 20.02.2015 15:54
Переписать код с Delphi на С++ saifullina Помощь студентам 0 30.10.2012 00:34
Переписать код bp C++, на Delphi Айдар Общие вопросы Delphi 0 12.06.2010 20:40