2009-08-06 5 views
1

Я хочу открыть представление «новая почта» с использованием почтового клиента по умолчанию (т. Е. Открыть новую форму электронной почты в Outlook). Но когда я идуСоздание новой почты (клиент по умолчанию) из Java/Windows

String cmd = "explorer.exe \"mailto:[email protected]?subject="+ 
      subject+"&body="+body+"\""; 
Runtime.getRuntime().exec(cmd); 

почта показывает, но у меня есть проблема: explorer.exe воспитывает экземпляр Internet Explorer с фиктивной страницы. Есть ли лучшее приложение для запуска, например rundll.exe с определенными аргументами?

Я знаю, что это возможно сделать, не вызывая iexplore из C++, но я не знаю, как в Java.

ответ

2

Try с java.awt.Desktop (Java 6)

Desktop dt = Desktop.getDesktop(); 
dt.mail(); 

будет открыт по умолчанию почтовый клиент (тот, связанный с электронной почты: протокол) о.

+0

Как вы видите, мне нужен предмет и тело. Я бы любил привязанность, но из того, что я читал, это не выполнимо. –

+1

API поддерживает это. uriMailTo = новый URI ("mailto", "[email protected]?subject =" + subject + "& body =" + body + "\", null); dt.mail (uriMailTo); – RealHowTo

+0

Отлично, спасибо! Я читал кое-что о вложении, но не нашел никакой реальной субстанции. JDIC (от которого мы только что избавились) и http://stackoverflow.com/questions/81862/how-do-i-send-an-email-attachment-using-the-designated-client-programmatically-f являются лучшее, что я видел, и ни один из них не достаточно хорош. Вы бы не узнали больше? –

1

Я нашел ответ, когда прибегая к помощи rundll.exe:

String subject = ...; 
String body = ...; 
String cmd = "rundll32.exe shell32.dll,ShellExec_RunDLL \"mailto:[email protected]?"+ 
      "subject="+subject+"&body="+body+"\""; 
Runtime.getRuntime().exec(cmd); 

Извините за тратить свое время!

+0

Jonas: Вы пробовали ShellExecute() вместо того, чтобы полагаться на недокументированные детали реализации, которые могут измениться в будущих версиях Windows? –

+0

Ларри: Я не думал, что на Java есть один? Что касается JNI-ing, я очень предпочитаю две строки кода Java, которые могут (возможно, не так) требуют незначительных корректировок до 50 строк кода, распространяемых по Java, C и системе сборки. –

 Смежные вопросы

  • Нет связанных вопросов^_^