Ответ 1
В Java не существует какого-либо агностического метода OS, поскольку не все операционные системы предоставляют стандартный способ запуска приложения электронной почты по умолчанию с более чем базовыми полями для нового письма.
В 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("[email protected]");
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" с содержимым и вложениями, которые вы хотели бы включить уже закодированными в качестве части письма. Затем этот файл можно запустить с помощью обработчика по умолчанию для соответствующего формата файла электронной почты. Тем не менее, это не гарантирует открытия обработчика электронной почты по умолчанию, равно как и формат файла не будет совместим со всеми почтовыми клиентами.