Перейти к содержимому

Фотография

Почему выскакивает исключение javax.mail.AuthenticationFailedException


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 laokoon

laokoon

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Иванов Александр Николаевич


Отправлено 05 декабря 2017 - 08:58

Используя протокол pop3, хочу открыть папку, чтоб извлечь файл. Но тест дойдя до строчки store.connect(mailserver,user,password); выбрасывает исключение.

Вот код:

private Folder openInbox(String user, String password) throws MessagingException {
store = mailSession.getStore("pop3");
try {
store.connect(mailserver,user,password);
Folder folder = store.getDefaultFolder().getFolder("INBOX");
folder.open(Folder.READ_WRITE);
return folder;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

 

Хотя все параметры перед обращением были определены.


  • 0

#2 baxatob

baxatob

    Опытный участник

  • Members
  • PipPipPipPip
  • 258 сообщений
  • ФИО:Юрий
  • Город:Riga

Отправлено 05 декабря 2017 - 09:07

И что за исключение? 


  • 0

#3 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 05 декабря 2017 - 09:15

В заглавии темы "javax.mail.AuthenticationFailedException"

Вообще тут гуглить надо, м.б. много причин

 

https://www.google.c...1.0.KgrvtZnmjEg


  • 0

#4 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 05 декабря 2017 - 10:20

а кто такой mailserver ?
он не определен в методе
  • 0

#5 laokoon

laokoon

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Иванов Александр Николаевич


Отправлено 05 декабря 2017 - 16:13

Вот все задано, все есть, а ошибка все равно выскакивает. mailServer определен в самом классе, пароль и логин определены перед выполнением коннекта. В консоли было проверено есть ли такой юзер. Да, он есть. Но ошибка никуда не уходит


  • 0

#6 laokoon

laokoon

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Иванов Александр Николаевич


Отправлено 05 декабря 2017 - 16:19

Используя протокол pop3, хочу открыть папку, чтоб извлечь файл. Но тест дойдя до строчки store.connect(mailserver,user,password); выбрасывает исключение.

Вот код:

private Folder openInbox(String user, String password) throws MessagingException {
store = mailSession.getStore("pop3");
try {
store.connect(mailserver,user,password);
Folder folder = store.getDefaultFolder().getFolder("INBOX");
folder.open(Folder.READ_WRITE);
return folder;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

 

Хотя все параметры перед обращением были определены.

 


Вот все задано, все есть, а ошибка все равно выскакивает. mailServer определен в самом классе, пароль и логин определены перед выполнением коннекта. В консоли было проверено есть ли такой юзер. Да, он есть. Но ошибка никуда не уходит.

Вот код этого класса полностью:

Тут все начинается с метода waitForMail

package ru.stqa.pft.mantis.appManager;

import com.sun.imageio.plugins.common.ReaderUtil;
import org.apache.commons.net.telnet.TelnetClient;
import org.subethamail.wiser.WiserMessage;
import ru.stqa.pft.mantis.model.MailMessage;

import javax.mail.*;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class JamesHelper {

private ApplicationManager app;
private TelnetClient telnet;
private InputStream in;
private PrintStream out;

private Session mailSession;
private Store store;
private String mailserver;

public JamesHelper (ApplicationManager app) {
this.app = app;
telnet = new TelnetClient();
mailSession = Session.getDefaultInstance(System.getProperties());
}

public boolean doesUserExist (String name) {
initTelnetSession();
write ("verify " + name);
String result = readUntil ("exist");
closeTelnetSession ();
return result.trim().equals("user " + name + " exist");
}

private void initTelnetSession() {

mailserver = app.getProperty("mailserver.host");
int port = Integer.parseInt(app.getProperty("mailserver.port"));
String login = app.getProperty("mailserver.adminlogin");
String password = app.getProperty("mailserver.adminpassword");

try {
telnet.connect(mailserver, port);
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}

// readUntil("Login id:");
// write("");
// readUntil("Password:");
// write("");

readUntil("Login id:");
write(login);
readUntil("Password:");
write(password);

readUntil("Welcome " + login + ". HELP for a list of commands");
}

public void createUser (String name, String passwd) {
initTelnetSession();
write ("adduser " + name + " " + passwd);
String result = readUntil ("user " + name + " added");
closeTelnetSession();
}

public void deleteUser (String name, String passwd) {
initTelnetSession();
write ("deluser " + name );
String result = readUntil ("user " + name + " deleted");
closeTelnetSession();
}

private String readUntil(String pattern) {

try {
char lastChar = pattern.charAt(pattern.length()-1);
StringBuffer sb = new StringBuffer();
// in.close();
// telnet.connect(mailserver, port);
// in = telnet.getInputStream();
char ch = (char) in.read();
while (true) {
System.out.print(ch);
sb.append(ch);
if (ch == lastChar) {
if ( sb.toString().endsWith(pattern)) {
return sb.toString();
}
}
ch = (char) in.read();
}

} catch (Exception e) {
e.printStackTrace();
}
return null;
}

private void write (String value) {
try {
out.println(value);
out.flush();
System.out.println(value);
}
catch (Exception e) {
e.printStackTrace();
}
}

private void closeTelnetSession() {
write ("quit");
}

public void drainEmail (String user, String password) throws MessagingException {
Folder inbox = openInbox (user,password);
for (Message message : inbox.getMessages()) {
message.setFlag(Flags.Flag.DELETED, true);
}
closeFolder (inbox);
}

private Folder openInbox(String user, String password) throws MessagingException {
store = mailSession.getStore("pop3");
try {
store.connect(mailserver,user,password);
Folder folder = store.getDefaultFolder().getFolder("INBOX");
folder.open(Folder.READ_WRITE);
return folder;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

private void closeFolder (Folder folder) throws MessagingException {
folder.close(true);
store.close();
}

public List<MailMessage> waitForMail (String user, String password, long timeout) throws MessagingException, IOException {
long now = System.currentTimeMillis();
while (System.currentTimeMillis() < now + timeout) {
List<MailMessage> allMail = getAllMail (user,password);
if (allMail.size() >= 0) {
return allMail;
}
try {
Thread.sleep (1000);
}
catch (InterruptedException e) {
e.printStackTrace();

}
}
throw new Error("No email :(");
}

private List<MailMessage> getAllMail(String user, String password) throws MessagingException {
Folder inbox = openInbox(user, password);
List<MailMessage> messages = Arrays.asList(inbox.getMessages()).stream().map((m) -> {
try {
return toModelMail(m);
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
})
.collect(Collectors.toList());
closeFolder(inbox);
return messages;
}

private static MailMessage toModelMail(Message m) throws MessagingException, IOException {
try {
return new MailMessage (m.getAllRecipients()[0].toString(), (String) m.getContent());
}
catch (MessagingException e) {
e.printStackTrace();
return null;
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
}

 

Прикрепляю файлы, на которых видна консоль, где выведен список юзеров и сам проект, где видны значения параметров метода store.connect

 

Прикрепленные файлы

  • Прикрепленный файл  consol.png   377,52К   0 Количество загрузок:
  • Прикрепленный файл  проект.png   638,83К   0 Количество загрузок:

  • 0

#7 leftCh

leftCh

    Постоянный участник

  • Members
  • PipPipPip
  • 179 сообщений

Отправлено 06 декабря 2017 - 06:58

Класс ошибки - ошибка аутентификации. Попробуйте обычным почтовым клиентом подключиться к этому же хосту, порту, по тому же протоколу и с тем же логином и паролем.


  • 0

#8 laokoon

laokoon

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Иванов Александр Николаевич


Отправлено 07 декабря 2017 - 07:52

Класс ошибки - ошибка аутентификации. Попробуйте обычным почтовым клиентом подключиться к этому же хосту, порту, по тому же протоколу и с тем же логином и паролем.

я новичок в этом деле. Вы не могли бы мне на пальцах показать, что мне надо изменить в том методе, где происходит такое подключение. В инете если и пишут, как подключиться, то там такие огромные методы, что в них можно запутаться. Просто при использовании чего-либо другого, необходимо знать, какие еще стандартные или нестандартные методы и классы необходимо использовать. А я этого еще не знаю. Мне тяжело. Могу только в общем знать, что будет делаться, а вот чтоб расписать самому - это надо опыт в этом деле.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных