Come faccio a inviare un allegato di posta elettronica, utilizzando l'apposito client, a livello di programmazione in Java

StackOverflow https://stackoverflow.com/questions/81862

  •  09-06-2019
  •  | 
  •  

Domanda

Vorrei incoraggiare i nostri utenti della nostra applicazione RCP per inviare i dettagli del problema al nostro servizio di assistenza.A tal fine, ho aggiunto un "Contatta il supporto" widget per il nostro standard della finestra di dialogo di errore.

Sono riuscito a usare URI intestazioni per inviare un stacktrace utilizzo di Java 6 JDIC chiamata: Desktop.getDesktop().mail(java.net.URI).Questo sarà il fuoco dell'utente client di posta elettronica, pronto per loro di aggiungere i loro commenti, e premi invio.

Mi piace la cottura il client di posta elettronica, perché è quello che l'utente è abituato, racconta il supporto di un intero lotto su l'utente (sigs, dati di contatto, ecc) e non ho molta voglia per la spedizione con Posta Java.

Quello che vorrei fare è collegare il file di log e il stacktrace come un file, quindi non c'è la lunghezza massima, e l'utente vede una bella pulita alla ricerca email, e l'ufficio di supporto ha un sacco di informazioni in più per lavorare con.

Posso fare questo con l'approccio che sto prendendo?O c'è un modo migliore?

Modifica:Io sono in un OSGi contesto, in modo da impacchettare JDIC sarebbe necessario.Se possibile, mi piacerebbe nave con pochi dipendenze possibili, e impacchettare il JDIC per più piattaforme, non è divertente, soprattutto per una piccola caratteristica.

JavaMail può essere adatto, ma per il fatto che questo sarà sul desktop dei nostri clienti aziendali.Il installazione/scoperta di configurazione dovrebbe essere trasparente, automatico e affidabile.Per quanto riguarda JavaMail, la configurazione sembra essere solo manuale.È questo il caso?

La risposta che mi piace di più è che utilizza il Desktop.open() per un *.file eml.Purtroppo Outlook Express (invece di Outlook) apre i file eml.Non ho idea se questo è di solito di default di Windows configurato per aprire file EML come questo.È questo solito?Oppure c'è un altro basato su testo, il formato che è facile da ottenere, b) si apre per impostazione predefinita nella stessa client di posta elettronica che gli utenti potrebbero essere in uso già?

È stato utile?

Soluzione

Si potrebbe risparmiare un temporaneo .file eml, e Desktop.getDesktop().open(emlFile)
Edit: Come dici tu, questo, purtroppo, aprire outlook express, invece di outlook.
Tuttavia, se si dispone di Windows Live Mail, saranno usate.

Altri suggerimenti

Se si utilizza il JDK 6 (si dovrebbe), il Desktop API è ora parte di JRE.Vedere http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/ per ulteriori informazioni.

Come un modo completamente diverso di gestire lo stesso problema, usiamo un bug tracker con XML-RPC interface, e i nostri (PCR, inoltre, btw) app parla di uso di una presentazione personalizzata dialogo.Siamo in grado di inviare i file di log per aiutare a diagnosticare il problema, senza che l'utente debba trovare loro.

Sono sicuro che la maggior parte dei bug tracker qualcosa di simile a questa disposizione.Usiamo Jira, e funziona alla grande (a quanto pare, hanno appena rilasciato una libera e Personale versione che lo rende facile da provare).

Utilizzando questo metodo, è possibile impostare la riga dell'oggetto e il corpo del testo con un URI come

mailto:me@here.com?SUBJECT=Support mail&BODY=This is a support mail

Tuttavia, la lunghezza di un oggetto e il corpo del testo hanno alcune limitazioni

Non c'è nessun modo che posso pensare di attatch un file utilizzando questo metodo o qualcosa di simile (senza aggiunta di javamail per il vostro app)

JDIC potrebbero non essere sempre disponibili per l'utente della piattaforma.Un buon modo per farlo è quello di utilizzare il javamail API.È possibile inviare una sorta di messaggio di posta elettronica, come spiegato in questo tutorial della SUN:

L'Invio Di Allegati

import java.awt.Desktop;
import java.io.File;
import java.net.URI;


public class TestMail {

    public static void main(String[] args) {
        try {       
         Runtime.getRuntime().exec(
                  new String[] {"rundll32", "url.dll,FileProtocolHandler",
                        "mailto:a@a.de?subject=someSubject&cc=a@a.de&bcc=a@a.de&body=someBodyText&Attach=c:\\test\\test.doc"}, null
                  );


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top