Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Переписать код из Delphi в java / 4 сообщений из 4, страница 1 из 1
16.10.2021, 07:54
    #40104886
Pcrepair
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать код из Delphi в java
Добрый день.
Есть 100% работающий код почтового рор3 клиента на делфи, работает со всеми сервисами(ну кроме хугли), записывает письмо в ЕМЛ файл(вместе со всем что там есть), потом любой почтовый клиент(опера, муррзилла самтыберд и прочие) окрывает файл без проблем

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

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
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;  //плохо конечно но компилятор требует вставит сюда возврат, а что еще?

    }



Заранее спасибо за ответы по ЗАДАННЫМ вопросам
...
Рейтинг: 0 / 0
16.10.2021, 13:06
    #40104927
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать код из Delphi в java
Не смотрел твой исходник. Но для чтения стрима в строку можно использовать это

https://commons.apache.org/proper/commons-io/apidocs/index.html?org/apache/commons/io/package-summary.html

+надо-бы добавить то что ты прочитал со стрима

Код: java
1.
rowMail.add(...)



и вернуть

Код: java
1.
return rowMail;
...
Рейтинг: 0 / 0
17.10.2021, 01:34
    #40104994
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать код из Delphi в java
А какой нибудь простенький пример посмотреть как например вот этот

https://kodejava.org/how-do-i-receive-mail-using-pop3/
...
Рейтинг: 0 / 0
17.10.2021, 11:27
    #40105012
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переписать код из Delphi в java
Sergunka
А какой нибудь простенький пример посмотреть как например вот этот

https://kodejava.org/how-do-i-receive-mail-using-pop3/
совершенно верно.
ТС как пенсионер препод долбит свою фразу "по заданным вопросам". А нужно Hello world решать.
А не переводить дословно с китайского на русский пословицы.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Переписать код из Delphi в java / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]