2013-07-04 2 views
0

В рамках программы java я хочу автоматически отправлять почту через локальный почтовый клиент пользователя.Java отправляет почту автоматически с помощью локального почтового клиента

Я использую следующий код, чтобы открыть клиент и заполнить необходимые поля, но как я могу отправить его сейчас автоматически без какого-либо взаимодействия с пользователем?

private void sendMail() throws MessagingException { 
    try { 
     Desktop.getDesktop().mail(new URI("mailto:[email protected]?subject=someSubject&[email protected],[email protected]&[email protected]&body=someBodyText")); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

В основном я хочу отправлять письма, которые не покидают сеть компании.

+2

Там нет API, который работает с каждым почтовым клиентом, поэтому лучшим вариантом является использование [Java Mail API] (http://www.mkyong.com/java/javamail -api-send-email-via-gmail-smtp-example /) и отправлять письма напрямую. – nif

+0

Я уже обсуждал API-интерфейс Java Mail, и моя основная проблема заключается в том, что я не знаю, какой почтовый сервер будет запущен на клиентских компьютерах. Какие значения я использую для следующего свойства: mail.smtp.host. Я знаю, что клиент будет в локальной сети, содержащей почтовый сервер, но я не знаю его «имя». – Markus

ответ

1

Ответ Java Mail API.

В принципе, вам нужна учетная запись электронной почты (обычно имя пользователя + пароль), вам также нужен адрес SMTP-сервера почтового сервера, который обычно находится на их веб-сайте.

+0

Приложение будет работать в различных полностью независимых сетях. Все, что я знаю, это то, что для каждой из сетей будет почтовый сервер, но я не знаю его адреса. Любой простой способ получить эту информацию, может быть, из реестра? – Markus

+0

Вам нужно знать больше об этих сетях, не предполагайте их конфигурации. Попросите администратора, установите соглашения о том, как ваши программы будут взаимодействовать с окружающей средой. –

+0

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

0

Я нашел способ справиться с прогнозом, по крайней мере, после этого руководства: Vogella, Eclipse-Microsoft Integration

В основном я использую класс OleClientSite для вызова перспективы. Затем я использую класс oleAutomation для отправки почты.

Фрагмент кода:

  Shell shell = new Shell(Display.getDefault()); 
      OleFrame frame = new OleFrame(shell, SWT.NONE); 
      // This should start outlook if it is not running yet 
      OleClientSite site = new OleClientSite(frame, SWT.NONE, "OVCtl.OVCtl"); 
      site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE); 
      // Now get the outlook application 
      OleClientSite site2 = new OleClientSite(frame, SWT.NONE, 
       "Outlook.Application"); 
      OleAutomation outlook = new OleAutomation(site2); 
      // 
      OleAutomation mail = invoke(outlook, "CreateItem", 0 /* Mail item */) 
       .getAutomation(); 
      setProperty(mail, "To", "[email protected]"); /* 
            * Empty but could also be 
            * predefined 
            */ 

      setProperty(mail, "Bcc", "[email protected]"); /* 
            * Empty but could also be 
            * predefined 
            */ 

      setProperty(mail, "BodyFormat", 2 /* HTML */); 
      setProperty(mail, "Subject", "Top News for you"); 
      setProperty(mail, "HtmlBody", 
       "<html>Hello<p>, please find some infos here.</html>"); 

      invoke(mail, "Send" /* or "Send" */); 
Смежные вопросы