Comment envoyer une pièce jointe à un e-mail à l'aide du client désigné, par programme à partir de Java

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

  •  09-06-2019
  •  | 
  •  

Question

J'aimerais encourager les utilisateurs de notre application RCP à envoyer les détails du problème à notre service d'assistance. À cette fin, j'ai ajouté un " Contact support " widget à notre dialogue d'erreur standard.

J'ai réussi à utiliser les en-têtes d'URI pour envoyer un stacktrace à l'aide de l'appel JDIC de Java 6: Desktop.getDesktop (). mail (java.net.URI) . Cela lancera le client de messagerie de l'utilisateur, prêt à lui permettre d'ajouter ses commentaires et à cliquer sur Envoyer.

J'aime lancer le client de messagerie, car c’est ce à quoi l’utilisateur est habitué. Il en dit beaucoup sur l’utilisateur (sigs, coordonnées, etc.) et je ne veux pas vraiment à expédier avec Java Mail .

Ce que je voudrais faire est de joindre le fichier journal et le stacktrace sous forme de fichier. Il n'y a donc pas d'exigence de longueur maximale. L'utilisateur voit un beau courrier électronique et le département de support dispose de beaucoup plus d'informations. travailler avec.

Puis-je faire cela avec l'approche que je prends? Ou y a-t-il un meilleur moyen?

Modifier : Je suis dans un contexte OSGi, il serait donc nécessaire de regrouper JDIC. Si possible, j'aimerais proposer le moins de dépendances possible, et regrouper le JDIC pour plusieurs plates-formes ne semble pas amusant, en particulier pour une si petite fonctionnalité.

JavaMail peut convenir, mais ce n’est pas sur le bureau de nos clients entreprises. La configuration / découverte de la configuration devrait être transparente, automatique et fiable. En ce qui concerne JavaMail, la configuration semble être manuelle uniquement. Est-ce le cas?

La réponse qui me plaît le plus est d’utiliser le Desktop.open () pour un fichier * .eml. Malheureusement, Outlook Express (plutôt que Outlook) ouvre les fichiers eml . Je ne sais pas si c'est habituel ou si Windows a été configuré par défaut pour ouvrir les fichiers EML comme celui-ci. Est-ce habituel? Ou bien existe-t-il un autre format texte a) facile à générer, b) ouvert par défaut dans le même client de messagerie que celui que les utilisateurs utiliseraient déjà?

Était-ce utile?

La solution

Vous pouvez enregistrer un fichier .eml temporaire et Desktop.getDesktop (). open (emlFile)

Modifier : comme vous l'avez fait remarquer, cela ouvrira malheureusement Outlook Express au lieu de Outlook.
Toutefois, si Windows Live Mail est installé, il l'utilisera.

Autres conseils

Si vous utilisez JDK 6 (vous devriez le faire), l’API de bureau fait maintenant partie du JRE. Voir http://java.sun.com/developer/technicalArticles/ J2SE / Desktop / javase6 / desktop_api / pour plus d'informations.

Comme une manière complètement différente de gérer le même problème, nous utilisons un gestionnaire de bogues avec une interface XML-RPC, et notre application (RCP aussi, btw) communique avec celui-ci à l'aide d'un dialogue de soumission personnalisé. Cela signifie que nous pouvons envoyer les fichiers journaux pour aider à diagnostiquer le problème, sans que l'utilisateur ait à les trouver.

Je suis sûr que la plupart des suiveurs de bogues ont quelque chose de ce genre disponible. Nous utilisons Jira, et cela fonctionne très bien (apparemment, ils viennent de publier une version personnelle gratuite qui facilite l’essai).

En utilisant cette méthode, vous pouvez définir la ligne d'objet et le corps du texte avec un URI comme

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

Toutefois, la longueur du sujet et du corps du texte seront limitation

Il n’ya aucun moyen auquel je peux penser d’attacher un fichier en utilisant cette méthode ou quelque chose de similaire (sans ajouter javamail à votre application)

JDIC peut ne pas toujours être disponible sur la plate-forme de votre utilisateur. Pour ce faire, utilisez l’API javamail. Vous pouvez envoyer un message électronique en plusieurs parties, comme expliqué dans ce tutoriel par SUN:

Envoi de pièces jointes

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();
        }
    }

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top