12
votes

Envoyer un e-mail avec pièce jointe à l'aide de l'application de messagerie du client

J'ai besoin de mon application-client-client installée localement (QT / C ++) pour générer un courrier électronique prêt à être envoyé sur la machine du client:

  • Ce message doit contenir le contenu d'un fichier binaire relativement petit (15K-200K).
  • Beaucoup de mes utilisateurs seront déconnectés au moment de la génération de ce message. Il est donc possible que l'e-mail soit nécessaire pour rester assis dans la boîte d'envoi jusqu'à une heure ultérieure.
  • Cette application fonctionnera sur Windows, Mac OS X et diverses distributions Linux (support officiel pour Ubuntu / Debian et Fedora), et il n'est pas nécessaire que les clients de messagerie spécifiques doivent être installés.

    J'ai déjà essayé:

    • Ouverture d'un Mailto: Lien Utilisation de Qdesktopservices :: Openurl () Avec le Joindre (ou Pièce jointe ) paramètre. Mais ces paramètres ne font pas officiellement partie du protocole, et certains clients (notamment Outlook) les ignorent.
    • encoder le fichier à l'aide de BASE64 et en ajoutant-le dans le cadre du paramètre Corps d'un Mailto: Link. Mais la longueur du lien mailto est tronquée par des clients de messagerie (à nouveau, notamment des perspectives) afin que cela ne fonctionne pas.

      Google Picasa réalise ceci (au moins, sous Windows; Je n'ai pas vérifié d'autres systèmes d'exploitation) lorsque vous envoyez des photos de l'application. Cela crée un message avec les pièces jointes et du texte pré-rempli. Vous pouvez ensuite éditer le message et envoyer à votre convenance. Des idées comment elles font cela?


0 commentaires

3 Réponses :


7
votes

Vous pouvez créer un fichier .eml et l'ouvrir qui devrait vous donner l'effet que vous souhaitez aussi longtemps qu'il existe un client de messagerie enregistré dans le système pour gérer les fichiers avec cette extension. Je suis sûr que ce n'est pas aussi universel que le mailto: Schéma mais si mailto: ne fonctionne pas pour vous, je pense que cela pourrait être la deuxième meilleure option d'essayer. / p>

de http://www.coolutils.com/formates/eml

Puisque les fichiers EML sont créés pour se conformer Avec l'industrie RFC 822 Standard, Ils peuvent être utilisés avec la plupart des e-mails Clients, serveurs et applications. Outre le Microsoft Outlook Express, Les fichiers EML peuvent être ouverts en utilisant le plus Clients de courrier électronique, tels que Microsoft Outlook, Microsoft Entourage, Mozilla Thunderbird, Apple Mail, et Incrédimail.

Note latérale
Lorsque je clique sur "E-mail" dans Picasa, j'ai obtenu la boîte de dialogue dans laquelle je peux choisir quelle application (Thunderbird ou Google Mail) Je souhaite envoyer un courrier électronique avec. Cela signifie Picasa connaît un client de messagerie spécifique utilisé pour envoyer un courrier électronique et peut utiliser la méthode personnalisée, spécifique au client de messagerie choisi, pour envoyer un courrier électronique. Ceci est bien sûr juste de la spéculation, mais il se peut que Picasa rend l'utilisateur à choisir un client par courrier électronique car il n'y a pas de moyen générique de faire ce que vous demandez.


0 commentaires

4
votes

Je ne pense pas que vous utilisez la bonne approche; Utilisez MAPI / C ++. J'en ai fait plusieurs fois dans Outlook / Thunderbird à l'aide de MAPI / C ++. Vous pouvez choisir le client de messagerie par défaut en interrogeant le registre; Je pense que c'est ce que font toutes les applications.

Voir aussi le lien ici http: //lists.trolltech .com / qt-Intérêt / 2006-02 / threv00861-0.html


2 commentaires

+1, c'est la solution sur Windows. Malheureusement, la question suggère qu'il nécessite une solution croisée ...


Pourriez-vous s'il vous plaît donner un lien avec un exemple d'utilisation de MAPI à Qt? Celui que vous avez posté est malheureusement mort



1
votes

Il y a quelque temps, j'ai commencé à écrire une petite bibliothèque pour ouvrir le "client de messagerie par défaut" de manière indépendante de la plate-forme. Cela peut encore avoir besoin de travail, mais vous pouvez l'utiliser comme base si vous le souhaitez: https: // github. com / picaschaf / qt-email


0 commentaires