Кажется, что нет никакого независимого от ОС способа сделать это в Java, поскольку не все ОС предоставляют стандартный способ запуска приложения электронной почты по умолчанию с более чем основными полями для нового письма.
В Windows можно использовать интерфейс JNI для MAPI, который обеспечит больший контроль над открытием электронной почты в почтовом приложении.Как вы упомянули, одной из таких библиотек является JMAPI - однако, похоже, что существует много библиотек с таким именем с похожими целями.Я обнаружил один, который недавно поддерживается и кажется довольно простым.Он включает в себя предварительно созданный двоичный файл DLL и сопровождающую библиотеку Java на основе JNI.
https://github.com/briandealwis/jmapi
С этим кодом кажется, что вам нужно всего лишь создать объект сообщения и вызватьспособ запустить его в почтовом приложении: import jmapi. *;...
if (JMAPI.isMapiSupported()) {
Message msg = new Message();
msg.setSubject("test!");
msg.setBody("Hello world");
List<String> toAddresses = new LinkedList<String>();
toAddresses.add("example@example.com");
msg.setToAddrs(toAddresses);
List<String> attachPaths = new LinkedList<String>();
//Must be absolute paths to file
attachPaths.add("C:\Users\Documents\file.jpg");
msg.setAttachments(attachPaths);
JMAPI.open(msg);
}
Другая возможность, которая может работать для Windows и Mac (и, возможно, других ОС), - это создать файл ".eml" или ".msg" с содержимым и вложениями, которые выхотел бы включить уже закодированный как часть письма.Этот файл может быть запущен с обработчиком по умолчанию для соответствующего формата файла электронной почты.Однако это не гарантирует открытие обработчика электронной почты по умолчанию, и формат файла не будет совместим с любым почтовым клиентом.