Ответ на письмо через Java Mail. Ошибка подключения

java
selenium
webdriver
Теги: #<Tag:0x00007f7b622aebf0> #<Tag:0x00007f7b622aea88> #<Tag:0x00007f7b622ae8f8>

(Влада Нижельская) #1

Есть класс, в котором я подключаюсь к почте и нахожу письмо с определенной темой.
Дописала код, чтобы можно было ответить на письмо, но при прогоне выдает ошибку о невозможности подключиться. Код ниже

public class MailForReply {
    public Message getEmail(String emailID, String password, String subjectToBeSearched) throws Exception {
        Properties properties = new Properties();
        properties.put("mail.store.protocol", "imaps");
        properties.put("mail.imaps.port", "993");
        properties.put("mail.imaps.starttls.enable", "true");
        Session emailSession = Session.getDefaultInstance(properties);

        Store store = emailSession.getStore("imaps");
        store.connect("imap.gmail.com", emailID, password);

        Folder folder = store.getFolder("INBOX");
        folder.open(Folder.READ_ONLY);

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        Message[] messages = null;
        boolean mailFound = false;
        Message email = null;

        for (int i = 0; i < 30; i++) {
            messages = folder.search(new SubjectTerm(subjectToBeSearched), folder.getMessages());
            if (messages.length == 0) {
                Thread.sleep(10000);
            }
        }
        for (Message mail : messages) {
            if (!mail.isSet(Flags.Flag.SEEN)) {
                email = mail;
                mailFound = true;
                System.out.println("Mail is found");
            }
        }

        String replyTo = InternetAddress.toString(email.getReplyTo());
        if (replyTo != null) {
            System.out.println("Reply-to: " + replyTo);
        }
        String to = InternetAddress.toString(email.getRecipients(Message.RecipientType.TO));
        if (to != null) {
            System.out.println("To: " + to);
        }
        Message replyMessage = new MimeMessage(emailSession);
        replyMessage = (MimeMessage) email.reply(false);
        replyMessage.setFrom(new InternetAddress(to));
        replyMessage.setText("Thanks");
        replyMessage.setReplyTo(email.getReplyTo());

        try {
            Transport t = emailSession.getTransport("smtp");
            t.connect("test@test.com", "1111111");
            t.sendMessage(replyMessage,
                    replyMessage.getAllRecipients());
        } finally {
            store.close();
        }
        System.out.println("message replied successfully ....");

        if (!mailFound) {
            throw new Exception("Could not found Email");
        }
        return email;
    }
}

(Vatslau) #2

Гмыло?

  1. там нужно включить имап в самом мыле
  2. Давно не юзал - вроде ещё лесс секуред апп разрешить доступ
  3. Оберните коннект циклом на разков 5 c небольшой задержкой на 500мс - бывают просто глюки с коннектом

(Влада Нижельская) #3

рука-лицо - не указала настройки smtp

properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.port", "25");

(Павел Сенин) #4

вот это попробуйте
You need to unlock the captcha by visiting this page https://www.google.com/accounts/DisplayUnlockCaptcha

и это надо учитывать:
Please note that Gmail’s SMTP server has a limit of 500 emails per day

отсюда взял - https://easyengine.io/tutorials/linux/ubuntu-postfix-gmail-smtp