use of com.axelor.mail.MailReader in project axelor-open-suite by axelor.
the class MailServiceMessageImpl method fetch.
@Override
public void fetch() throws MailException {
final EmailAccount emailAccount = mailAccountService.getDefaultReader();
if (emailAccount == null) {
super.fetch();
} else {
final MailReader reader = getMailReader(emailAccount);
final AuditableRunner runner = Beans.get(AuditableRunner.class);
runner.run(() -> {
try {
fetch(reader);
} catch (Exception e) {
log.error("Unable to fetch messages", e);
}
});
}
}
use of com.axelor.mail.MailReader in project axelor-open-suite by axelor.
the class MailServiceMessageImpl method getMailReader.
private MailReader getMailReader(EmailAccount emailAccount) {
if (readerAccount == null || !readerAccount.getId().equals(emailAccount.getId()) || !readerAccount.getVersion().equals(emailAccount.getVersion())) {
readerAccount = emailAccount;
reader = null;
}
if (reader == null) {
MailAccount mailAccount = mailAccountService.getMailAccount(emailAccount);
reader = new MailReader(mailAccount);
}
return reader;
}
use of com.axelor.mail.MailReader in project axelor-open-suite by axelor.
the class MailAccountServiceImpl method fetchEmails.
@Override
public int fetchEmails(EmailAccount mailAccount, boolean unseenOnly) throws MessagingException, IOException {
if (mailAccount == null) {
return 0;
}
log.debug("Fetching emails from host: {}, port: {}, login: {} ", mailAccount.getHost(), mailAccount.getPort(), mailAccount.getLogin());
com.axelor.mail.MailAccount account = null;
if (mailAccount.getServerTypeSelect().equals(EmailAccountRepository.SERVER_TYPE_IMAP)) {
account = new ImapAccount(mailAccount.getHost(), mailAccount.getPort().toString(), mailAccount.getLogin(), mailAccount.getPassword(), getSecurity(mailAccount));
} else {
account = new Pop3Account(mailAccount.getHost(), mailAccount.getPort().toString(), mailAccount.getLogin(), mailAccount.getPassword(), getSecurity(mailAccount));
}
MailReader reader = new MailReader(account);
final Store store = reader.getStore();
final Folder inbox = store.getFolder("INBOX");
// open as READ_WRITE to mark messages as seen
inbox.open(Folder.READ_WRITE);
// find all unseen messages
final FetchProfile profile = new FetchProfile();
javax.mail.Message[] messages;
if (unseenOnly) {
final FlagTerm unseen = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
messages = inbox.search(unseen);
} else {
messages = inbox.getMessages();
}
profile.add(FetchProfile.Item.ENVELOPE);
// actually fetch the messages
inbox.fetch(messages, profile);
log.debug("Total emails unseen: {}", messages.length);
int count = 0;
for (javax.mail.Message message : messages) {
if (message instanceof MimeMessage) {
MailParser parser = new MailParser((MimeMessage) message);
parser.parse();
createMessage(mailAccount, parser, message.getSentDate());
count++;
}
}
log.debug("Total emails fetched: {}", count);
return count;
}
Aggregations