Не работает поток с Javamail в Android
Вот мой код:
package com.example.diploma10;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.IMAPStore;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Properties;
import java.util.concurrent.ExecutionException;
import setting.EmailSetting;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
public class Mail extends AppCompatActivity {
String IMAP_AUTH_EMAIL = "";
String IMAP_AUTH_PWD = "";
String IMAP_Server = "smtp.gmail.com";
String IMAP_Port = "993";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mail);
setTitle("Почта");
String login = EmailSetting.loadParameterLogin(this);
String password = EmailSetting.loadParameterPassword(this);
IMAP_AUTH_EMAIL = login;
IMAP_AUTH_PWD = password;
RetreiveFeedTask task = new RetreiveFeedTask();
task.execute();
try {
String s = task.get();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private class RetreiveFeedTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Properties properties = new Properties();
properties.put("mail.debug", "false");
properties.put("mail.store.protocol", "imaps");
properties.put("mail.imap.ssl.enable", "true");
properties.put("mail.imap.port", IMAP_Port);
Authenticator auth = new EmailAuthenticator(IMAP_AUTH_EMAIL, IMAP_AUTH_PWD);
Session session = Session.getDefaultInstance(properties, auth);
session.setDebug(false);
try {
IMAPStore store = (IMAPStore) session.getStore("imaps");
// Подключение к почтовому серверу
store.connect(IMAP_Server, IMAP_AUTH_EMAIL, IMAP_AUTH_PWD);
// Папка входящих сообщений
IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX");
// Открываем папку в режиме только для чтения
inbox.open(IMAPFolder.READ_ONLY);
System.out.println("Количество сообщений : " + String.valueOf(inbox.getMessageCount()));
if (inbox.getMessageCount() == 0)
return null;
// Последнее сообщение; первое сообщение под номером 1
Message message = inbox.getMessage(inbox.getMessageCount());
Multipart mp = (Multipart) message.getContent();
// Вывод содержимого в консоль
for (int i = 0; i < mp.getCount(); i++) {
BodyPart bp = mp.getBodyPart(i);
if (bp.getFileName() == null)
System.out.println(" " + i + ". сообщение : '" + bp.getContent() + "'");
else
System.out.println(" " + i + ". файл : '" + bp.getFileName() + "'");
}
} catch (NoSuchProviderException e) {
System.err.println(e.getMessage());
} catch (MessagingException e) {
System.err.println(e.getMessage());
} catch (IOException e) {
System.err.println(e.getMessage());
}
return null;
}
}
Ошибка падает на строчке:
store.connect(IMAP_Server, IMAP_AUTH_EMAIL, IMAP_AUTH_PWD);
В моем проекте следующие зависимости:
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'org.jsoup:jsoup:1.8.3'
implementation 'com.sun.mail:android-mail:1.5.5'
implementation 'com.sun.mail:android-activation:1.5.5'
}
Что ему надо? Почему он не работает? :с