Tenho esta Classe que verifica a caixa de entrada de uma conta do Gmail. Faço os downloads dos anexos nas mensagens recebidas. Porém quando recebo e-mails de uma conta empresarial(genuína)“noreply@”, não consigo fazer download dos anexos, e se eu enviar de um email meu, por exemplo, baixo sem problemas.
Percebi que nestas mensagens do “noreply”, o e-mail recebido fica com uma indicação de “não encriptado”, com icone em vermelho no Gmail.
Aqui é um caso onte tenho 4 mensagens de e-mail, as três primeiras são as que não consigo fazer o download, e aútima eu consigo. Se puderem me dar algumas instruções para conseguir fazer o download de de todas as mensagens, obrigado.
Não ocorre nenhum tipo de erro, exception, apenas não faz download dos anexos das mensagens recebidas deste “noreply@”. Esta parte do “log” foi onde percebi diferenças entre as mensagens que consigo fazer o download e as que nao.
Mesmo que marque como não lida, e desde a primeira vez que rodo a aplicação já não consigo o download destas.
boundary= //consigo
boundary="Mark= //não consigo
Log:
Content :multipart/MIXED; boundary="Mark=_2020918214536929s+dvJew"
Content :multipart/MIXED; boundary="Mark=_202091823044286h+hZLxI4"
Content :multipart/MIXED; boundary="Mark=_2020918233036586AyXZ4CF"
Content :multipart/MIXED; boundary=00000000000074b8d805afa0fb96
Classe:
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.*;
import javax.mail.internet.MimeBodyPart;
public class MailReader_v01 {
public static void main(String args[]) throws Exception {
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "email@gmail.com", "senha");
System.out.println(store);
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
Message messages[] = inbox.getMessages();
for (Message message : messages) {
System.out.println("Content :" + message.getContentType());
System.out.println("Subject :" + message.getSubject());
System.out.println("FileName :" + message.getFileName());
saveAttachments(messages);
}
} catch (NoSuchProviderException e) {
e.printStackTrace();
System.exit(1);
} catch (MessagingException e) {
e.printStackTrace();
System.exit(2);
}
}
public static void saveAttachments(Message[] messages) throws Exception {
for (Message msg : messages) {
if (msg.getContent() instanceof Multipart) {
Multipart multipart = (Multipart) msg.getContent();
for (int i = 0; i < multipart.getCount(); i++) {
Part part = multipart.getBodyPart(i);
String disposition = part.getDisposition();
if ((disposition != null)
&& ((disposition.equalsIgnoreCase(Part.ATTACHMENT)
|| (disposition.equalsIgnoreCase(Part.INLINE))))) {
MimeBodyPart mimeBodyPart = (MimeBodyPart) part;
String fileName = mimeBodyPart.getFileName();
try {
File fileToSave = new File("C:\\data\\" + fileName);
mimeBodyPart.saveFile(fileToSave);
} catch (IOException | MessagingException ex) {
ex.printStackTrace();
}
}
}
}
}
}
}