2011-01-20 44 views
12

Ho bisogno del mio localmente installata, l'applicazione thick-client (Qt/C++) per generare un ready-to-be-inviato un messaggio di posta elettronica sulla macchina del cliente:inviare email con allegati utilizzando l'applicazione di posta elettronica del cliente

  • Questo messaggio deve contenere il contenuto di un file binario relativamente piccolo (15K - 200K).
  • Molti dei miei utenti verranno disconnessi nel momento in cui viene generato questo messaggio, quindi è possibile che l'e-mail debba rimanere nella posta in uscita fino a un momento successivo.
  • Questa applicazione verrà eseguita su Windows, Mac OS X e varie distribuzioni Linux (supporto ufficiale per Ubuntu/Debian e Fedora) e non è necessario installare client specifici.

ho già provato:

  • apertura di un collegamento mailto: utilizzando QDesktopServices::openUrl() con il parametro attach (o attachment). Ma quei parametri non sono ufficialmente parte del protocollo e alcuni client (in particolare Outlook) li ignorano.
  • Codifica del file utilizzando Base64 e aggiungendolo come parte del parametro body di un collegamento mailto:. Ma la lunghezza del collegamento mailto viene troncata da alcuni client di posta elettronica (di nuovo, in particolare Outlook), quindi non funzionerà.

Google Picasa raggiunge questo (almeno su Windows, non ha controllato altri sistemi operativi) quando si inviano immagini dall'interno dell'applicazione. Crea un messaggio con gli allegati e alcuni testi precompilati. È quindi possibile modificare il messaggio e inviare a proprio piacimento. Qualche idea su come stanno facendo questo?

risposta

7

È possibile creare un file .eml e aprirlo che dovrebbe darvi l'effetto desiderato fintanto che nel sistema è registrato un client e-mail per gestire i file con questa estensione. Sono sicuro che non è così universale come lo schema mailto: ma se mailto: non funziona per te, penso che questa potrebbe essere la seconda opzione migliore da provare.

Da http://www.coolutils.com/Formats/EML

Dal file EML sono creati per rispettare con l'industria RFC 822 di serie, possono essere utilizzati con la maggior parte di posta elettronica client, server e applicazioni. Oltre al Microsoft Outlook Express, file EML può essere aperto utilizzando la maggior parte client di posta elettronica come Microsoft Outlook , Microsoft Entourage, Mozilla Thunderbird , Apple Mail, e IncrediMail.

Nota a margine
Quando clicco 'e-mail' in Picasa ottengo finestra di dialogo dove posso scegliere quale applicazione (Thunderbird o Google Mail) mi desidera inviare e-mail con. Ciò significa che Picasa conosce lo specifico client di posta elettronica utilizzato per inviare e-mail e può utilizzare un metodo personalizzato, specifico per il client di posta scelto, per inviare e-mail. Questa è, naturalmente, solo una speculazione, ma potrebbe essere che Picasa induca l'utente a scegliere il client di posta elettronica perché non esiste un modo generico per fare ciò che chiedi.

4

Non penso che stiate usando l'approccio corretto; usa MAPI/C++. Ho fatto questo più volte in Outlook/Thunderbird usando MAPI/C++.È possibile scegliere il client di posta elettronica predefinito interrogando il registro; Penso che sia quello che fanno tutte le applicazioni.

vedere anche il link qui http://lists.trolltech.com/qt-interest/2006-02/thread00861-0.html

+2

+1, questa è la soluzione su Windows. Sfortunatamente, la domanda suggerisce che ha bisogno di una soluzione multipiattaforma ... – Stobor

1

Qualche tempo fa ho cominciato a scrivere una piccola biblioteca per l'apertura del 'client di posta predefinito' in un modo indipendente dalla piattaforma. Potrebbe anche essere necessario un po 'di lavoro, ma puoi usarlo come base se vuoi: https://github.com/picaschaf/qt-email

Problemi correlati