Как прочитать OTP из электронной почты с помощью Selenium WebDriver?

Я автоматизирую веб-страницу, на которой для регистрации otp отправляется на электронную почту для проверки. Я хочу получить OTP из электронной почты и распечатать в текстовом поле.

Пожалуйста посоветуй.


person Ashish Dubey    schedule 24.12.2018    source источник
comment
Очень непонятно, о чем вы спрашиваете. Прочтите руководство SO о том, как задать хороший вопрос, и соответствующим образом отредактируйте свой вопрос.   -  person Nino Filiu    schedule 24.12.2018


Ответы (1)


Приведенный ниже код можно использовать для получения OTP из почтового ящика Outlook, аналогичный smtp можно использовать для всех других почтовых ящиков.

public static String OutlookMailReader(String mailFolderName,String emailSubjectContent, String emailContent, int lengthOfOTP) {

            
//mailFolderName(Eg- "INBOX"), emailSubjectContent(Eg- Mail for OTP),
emailContent(Eg- OTP is 111111), OTP length(Eg- 6)
            String hostName = "smtp-mail.outlook.com";//change it according to your mail

            String username = "****@***.com";//username 

            String password = "*******";

            int messageCount;

            int unreadMsgCount;

            String emailSubject;

            Message emailMessage;

            String searchText=null ;

            Properties sysProps = System.getProperties();

            sysProps.setProperty("mail.store.protocol", "imaps");

            try {

                Session session = Session.getInstance(sysProps, null);

                Store store = session.getStore();

                store.connect(hostName, username, password);

                Folder emailBox = store.getFolder(mailFolderName);

                emailBox.open(Folder.READ_WRITE);

                messageCount = emailBox.getMessageCount();

                System.out.println("Total Message Count: " + messageCount);

                unreadMsgCount = emailBox.getNewMessageCount();

                System.out.println("Unread Emails count:" + unreadMsgCount);

                for(int i=messageCount; i>(messageCount-unreadMsgCount); i--)

                {

                    emailMessage = emailBox.getMessage(i);

                    emailSubject = emailMessage.getSubject();

                    if(emailSubject.contains(emailSubjectContent))

                    {

                        System.out.println("OTP mail found");

                        String line;

                        StringBuffer buffer = new StringBuffer();

                        BufferedReader reader = new BufferedReader(new InputStreamReader(emailMessage.getInputStream()));

                        while ((line = reader.readLine()) != null) {

                            buffer.append(line);

                        }

                        String messageContent=emailContent;

                        String result = buffer.toString().substring(buffer.toString().indexOf(messageContent));

                        searchText = result.substring(messageContent.length(), messageContent.length()+lengthOfOTP);

                        System.out.println("Text found : "+ searchText);

                        emailMessage.setFlag(Flags.Flag.SEEN, true);

                        break;

                    }

                    emailMessage.setFlag(Flags.Flag.SEEN, true);

                }

                emailBox.close(true);

                store.close();


            } catch (Exception mex) {

                mex.printStackTrace();

                System.out.println("OTP Not found ");

            }

            return searchText;

        }

Объяснение: mailFolderName (например, «INBOX»), emailSubjectContent (например, Mail для OTP), emailContent (например, OTP — 111111), длина OTP (например, 6), так как мой код активации составляет 6 цифр.

Код проверяет почту Outlook и проверяет недавнюю непрочитанную почту на наличие почты с темой (например, почта OTP). Открывает выбранное письмо и возвращает OTP

person S S    schedule 13.05.2019