После заполнения формы регистрации необходимо проверить пришло ли письмо в почтовый сервис (mail.ru, mail.yandex.ru, gmail.com) + кликнуть на ссылку активации аккаунта.
Подскажите, как вы проверяете пришло письмо или нет, и клик по ссылке в письме? Как в настоящее время это делать наиболее правильно?
Нашел только способ с ипользованием сервисов одноразовой почты, когда просто кликами в неё заходим через xpath. Но, во-первых, сейчас во всех таких сервисах есть капча, во-вторых, мне кажется это не особо хороший способ.
Может есть где-то статья с подробным разбором данной темы для “чайника”? Видел упоминания про java mail , но статьи как это всё подключить не нашел.
И, наверно, совсем глупый вопрос - c помощью библиотеки RestAssured можно подключиться к API почтовых сервисов (mail.ru, mail.yandex.ru, gmail.com) прямо из Intellij Idea?
к апи не подключаются, его используют кодом
создайте ящик, получите токен аутентификации, с ним выполните запросы, которые описаны в спецификации к API используемой вами почты и дальше это реализуйте в коде
мне кажется, у вас не хватает некоей общей компьютерной грамотности, либо понимания, что такое разработка вообще. idea не равно java
джава это язык программирования, вы можете код писать в блокноте и запускать его из консоли, если установите на компьютер саму java в виде java development kit например
intellij idea это среда разработки на джаве и языках, что исполняются джавой (kotlin, groovy и иже с ними)
api - это выставленный наружу интерфейс, который позволяет делать запросы к себе и отдаёт ответы на эти запросы; и он не зависит от того, из idea вы запросы эти делать будете кодом на java, или например powershell-ом, если у вас винда
потому я вам написал, что попробуйте установить postman и в нём поработать с api почты, которую вы будете использовать в тестах
То что Intellij это не Java понимаю, не совсем понял как результаты взаимодействия с API почты через Postman мне применить к тестам на Java.
Созданный тест на Java в Intellij производит регистрацию пользователя.
Далее нужно проверить пришло ли письмо в почтовый сервис (mail.ru, mail.yandex.ru, gmail.com) , а также кликнуть на ссылку активации аккаунта в письме. Вот к этому не знаю как подступиться. Пробовал как пишут в статьях через IMAP подключиться, но пишет, что пароль неверный, хотя код такой же как в статье-видео. По подключению через API не смог найти подробной информации как в Java через API почты можно найти нужное сообщение и кликнуть в теле письма по ссылке. Может подскажете подробную статью-видео по данной задаче?
Вроде задача довольно популярная, что при регистрации нужно проверять пришло ли письмо и кликать для активации аккаунта, восстановления пароля и пр. Но нигде не могу найти разбора решения данной задачи
Запуск следующего кода возвращает ошибку “Exception in thread “main” jakarta.mail.AuthenticationFailedException: failed to connect, no password specified?”
Подскажите, пожалуйста, что может быть не так?
package Mail;
import jakarta.mail.*;
import java.util.Properties;
public class GMail {
public static void check(String host, String storeType, String user,
String password)
{
try {
//create properties field
Properties properties = new Properties();
properties.put("mail.pop3.host", host);
properties.put("mail.pop3.port", "995");
properties.put("mail.pop3.starttls.enable", "true");
Session emailSession = Session.getDefaultInstance(properties);
//create the POP3 store object and connect with the pop server
Store store = emailSession.getStore("pop3s");
store.connect(host, user, password);
//create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("messages.length---" + messages.length);
for (int i = 0, n = messages.length; i < n; i++) {
Message message = messages[i];
System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
System.out.println("Text: " + message.getContent().toString());
}
//close the store and folder objects
emailFolder.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String host = "pop.gmail.com";// change accordingly
String mailStoreType = "pop3";
String username = "happy.snale@gmail.com";// change accordingly
String password = "указал свой пароль";// change accordingly
check(host, mailStoreType, username, password);
}
При подключении к Яндекс.Почте по IMAP возникает ошибка “Exception in thread “main” jakarta.mail.MessagingException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”.
Погуглил - пишут, что дело в неизвестном SSL-сертификате сервера, к которому обращаюсь. Скачал сертификат mail.yandex.ru , установил в хранилище через keytool. Но не помогло.