2011-01-20 31 views
12

necesito mi localmente instalado, aplicación cliente (Qt/C++) para generar un producto listo-para ser enviados en mensajes de correo electrónico en la máquina del cliente:Enviar correo electrónico con archivo adjunto mediante aplicación de correo electrónico del cliente

  • Este mensaje debe contener el contenido de un archivo binario relativamente pequeño (15K - 200K).
  • Muchos de mis usuarios se desconectarán en el momento en que se genera este mensaje, por lo que es posible que el correo electrónico tenga que permanecer en la bandeja de salida hasta más adelante.
  • Esta aplicación se ejecutará en Windows, Mac OS X y varias distribuciones de Linux (soporte oficial para Ubuntu/Debian y Fedora), y no es necesario que se instalen clientes de correo electrónico específicos.

Ya he probado:

  • La apertura de un enlace mailto: usando QDesktopServices::openUrl() con el parámetro attach (o attachment). Pero esos parámetros no son oficialmente parte del protocolo, y algunos clientes (especialmente Outlook) los ignoran.
  • Codificando el archivo usando Base64 y agregándolo como parte del parámetro body de un enlace mailto:. Pero la longitud del enlace mailto es truncada por algunos clientes de correo electrónico (una vez más, notablemente Outlook) por lo que esto no funcionará.

Google Picasa logra esto (al menos, en Windows, no ha revisado otros sistemas operativos) cuando envía imágenes desde dentro de la aplicación. Crea un mensaje con los archivos adjuntos y texto precompletado. Luego puede editar el mensaje y enviarlo a su conveniencia. ¿Alguna idea de cómo están haciendo esto?

Respuesta

7

Puede crear un archivo .eml y abrirlo, lo que le dará el efecto que desee siempre y cuando haya un cliente de correo electrónico registrado en el sistema para manejar los archivos con esta extensión. Estoy seguro de que esto no es tan universal como el esquema mailto:, pero si mailto: no funciona para usted, creo que esta podría ser la segunda mejor opción para probar.

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

Dado que se crean archivos EML a cumplir con el estándar de la industria RFC 822, que se pueden utilizar con la mayoría de correo electrónico clientes, servidores y aplicaciones. Además de la Microsoft Outlook Express, archivos EML se pueden abrir utilizando la mayoría de clientes de correo electrónico, como Microsoft Outlook, Microsoft Entourage, Mozilla Thunderbird , Apple Mail y IncrediMail.

Nota al margen
Al hacer clic en 'Correo electrónico' en Picasa me sale de diálogo en el que puede elegir la aplicación (Thunderbird o Google Mail) que quieren enviar correo electrónico con. Esto significa que Picasa conoce el cliente de correo electrónico específico que se utiliza para enviar correos electrónicos y puede usar un método personalizado, específico para el cliente de correo electrónico elegido, para enviar correos electrónicos. Por supuesto, esto es solo una especulación, pero es posible que Picasa haga que el usuario elija un cliente de correo electrónico porque no hay una forma genérica de hacer lo que usted pregunta.

4

No creo que esté utilizando el enfoque correcto; usa MAPI/C++. Lo he hecho varias veces tanto en Outlook/Thunderbird usando MAPI/C++.Puede elegir el cliente de correo electrónico predeterminado consultando el registro; Creo que eso es lo que hacen todas las aplicaciones.

también ver el enlace aquí http://lists.trolltech.com/qt-interest/2006-02/thread00861-0.html

+2

+1, esa es la solución en Windows. Desafortunadamente, la pregunta sugiere que necesita una solución multiplataforma ... – Stobor

1

Hace algún tiempo que he empecé a escribir una pequeña biblioteca para abrir el 'cliente de correo electrónico predeterminado' de una manera independiente de la plataforma. Todavía puede necesitar algún trabajo, pero puede usarlo como base si lo desea: https://github.com/picaschaf/qt-email

Cuestiones relacionadas