#java #spring-boot #email-attachments #pop3
Вопрос:
Я хотел бы загрузить вложения из списка рассылки электронной почты. У меня не будет имени пользователя и пароля для распространения. Я попытался загрузить вложение с моего личного электронного письма, оно работает нормально. Но, ищу решение, которое поможет мне загрузить вложение электронной почты из списка рассылки. Кто-нибудь может мне в этом помочь ? Вот мой фрагмент кода.Его можно загрузить с моей личной электронной почты.
@SpringBootApplication
public class MailDownload implements CommandLineRunner {
private String downloadDirectory = "/Desktop/";
private String smtpHost = System.getProperty("emailHost", "outlook.office365.com");
public static void main(String[] args) {
SpringApplication.run(MailDownload.class);
}
@Override
public void run(String... args) throws Exception {
downloadEmailAttachments(smtpHost,"995");
}
public void downloadEmailAttachments(String host, String port) throws NoSuchProviderException, MessagingException, IOException {
Properties properties = setMailServerProperties(host, port);
Store store = setSessionStoreProperties(properties);
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
Message[] arrayMessages = inbox.getMessages();
for (int i = 0; i < arrayMessages.length; i ) {
Message message = arrayMessages[i];
Address[] fromAddress = message.getFrom();
String from = fromAddress[0].toString();
String subject = message.getSubject();
String sentDate = message.getSentDate().toString();
List<String> attachments = new ArrayList<String>();
if (message.getContentType().contains("multipart")) {
attachments = downloadAttachments(message);
}
System.out.println("Message #" (i 1) ":");
System.out.println(" From: " from);
System.out.println(" Subject: " subject);
System.out.println(" Sent Date: " sentDate);
System.out.println(" Attachments: " attachments);
}
inbox.close(false);
store.close();
}
public Properties setMailServerProperties(String host, String port) {
Properties properties = new Properties();
properties.put("mail.pop3.host", host);
properties.put("mail.pop3.port", port);
properties.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.pop3.socketFactory.fallback", "false");
properties.setProperty("mail.pop3.socketFactory.port", String.valueOf(port));
return properties;
}
public Store setSessionStoreProperties(Properties properties) throws NoSuchProviderException, MessagingException {
Session session = Session.getDefaultInstance(properties);
Store store = session.getStore("pop3");
store.connect("helloworld@outlook.com","Password");
return store;
}
public List<String> downloadAttachments(Message message) throws IOException, MessagingException {
List<String> downloadedAttachments = new ArrayList<String>();
Multipart multiPart = (Multipart) message.getContent();
int numberOfParts = multiPart.getCount();
for (int partCount = 0; partCount < numberOfParts; partCount ) {
MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
String file = part.getFileName();
part.saveFile(downloadDirectory File.separator part.getFileName());
downloadedAttachments.add(file);
}
}
return downloadedAttachments;
}
}