Ошибка указывает, что есть два возможных класса Authenticator
, на которые здесь ссылаются, а именно java.net.Authenticator and javax.mail.Authenticator
, как говорится в ошибке.
Это потому, что вы импортировали java.net. * И javax.mail. *, А компилятор не знает, какой Authenticator
вам нужен.
Исправьте это, явно импортировав
import javax.mail.Authenticator;
ИЛИ квалифицирует Аутентификатор в строке 22 как
javax.mail.Authenticator authenticator = new javax.mail.Authenticator()
UPDATE
Поскольку у вас возникают проблемы с отправкой почты, сначала проверьте, дали ли сетевые администраторы вам разрешения на подключение к серверу smtp в gmail. Ты за прокси?
После создания sess
добавьте эту строку в код: sess.setDebug(true);
Посмотрите на сообщения и посмотрите, как далеко вы зашли.
Попробуйте другие советы по отладке, приведенные по адресу: http://java.sun.com/products/javamail/FAQ.html#debug
ОБНОВЛЕНИЕ 2
Я попытался запустить ваш код, и он работает для меня, включая отправку электронного письма.
Мне пришлось добавить одну строку для реквизита
props.put("mail.smtp.starttls.enable","true");
И, конечно, замените return new PasswordAuthentication("user", "pass");
на свое действительное имя пользователя / пароль.
И "abc@gmail.com" на ваш фактический адрес электронной почты.