Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Colocar email en bandeja de salida de un cliente pop
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Colocar email en bandeja de salida de un cliente pop Responder citando

Hola
Estoy tratando de enviar un email con archivo adjunto, y no quiero enviarlo a un servidor sino colocarlo dentro de la bandeja de salida de Outlook Express o thunderbird cualquiera de ellos, asi cuando el usuario use el cliente pop transfiera los email a los destinatarios.
¿Alguien sabe como hacer esto ? cualquier ayuda les voy a agradecer.
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Sigo sin poder resolver el probleama, mirando en la red encontre que desde Delphi y VB usan MAPI pero susede q cuando instalo msmapi32.ocx todo bien ningun error me crea dos controles MAPISession y MAPIMessages pero y ahora bienen los peros cuando intento arrastrar el MAPISession a un formulario me da un error
Cita:

License information TMAPISession not found. You cannot use this control in design mode.

y si es el MAPIMessages
Cita:

License information TMAPIMessages not found. You cannot use this control in design mode.

alguien sabe porque estos errores, es correcta la forma en que estoy intentando usar este control? nesecito algun control mas?
gracias
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Si quieres un ejemplo de como enviar un email usando MAPI sin instalar ningún componente:

https://cppbuilder.es/viewtopic.php?t=3654

Aunque no actúa como tu esperas, antes de poner el mensaje en la bandeja de salida del cliente de correo predeterminado, por seguridad le pedirá permiso al usuario.

Si no quieres que muestre el email en pantalla puedes quitar en el código anterior lo siguiente: "MAPI_DIALOG | MAPI_LOGON_UI", aunque aun así seguirá pidiendo permiso al usuario.

Otro detalle es que el correo no se queda en la bandeja de salida a menos que lo tengas configurado así, por defecto se envía en el momento. En el Outlook Express se deshabilita este comportamiento en las opciones:

Menú: Herramientas -> Opciones... -> Pestaña: Enviar -> Checkbox: "Enviar mensajes inmediatamente"
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias LEO no se como se me paso y no mire en Tips & Tricks, de nuevo gracias Wink
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Hola LEO lo probe tal como lo mensionaste y funciona correctamente, el tema del permiso de usuario lo quite con una opcion del outlook Herramientas/Opciones/Seguridad/ es un check "Avisarme cuando otras aplicaciones intenten enviar un correo electronico con mi nombre".
Ahora estoy mirando el registro de windows para ver donde se guardan esas opciones del check para que la aplicacion configure automaticamente, cuando tenga resultados lo posteo por si alguien nesecita
gracias de nuevo Very Happy
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Ya lo tengo esta en la rama
Cita:

[HKEY_CURRENT_USER\Identities\{276DE67D-E0D5-435B-B0FE-56D8873673F8}\Software\Microsoft\Outlook Express\5.0\Mail]

las entradas son
Cita:

"Send Mail Immediately"=dword:00000001
"Warn on Mapi Send"=dword:00000001

1=enable y 0=disable
ahora el nombre q esta despues de identities creo q tiene relacion con el usuario, digo porque la clave es = a la que se crea en la carpeta
Cita:

C:\Documents and Settings\xxx\Configuración local\Datos de programa\Identities\

xxx = nombre de usuario de windows
cuando se crea una cuenta en el outlook express automaticamente se crea una capeta en el path q indico arriba y el nombre de esta carpeta coninside con las claves q se ve en el registro esto aparentemente es asi para cada usuario de windows que tenga configurada una cuenta OE
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Tor escribió:
ahora el nombre q esta despues de identities creo q tiene relacion con el usuario, digo porque la clave es = a la que se crea en la carpeta
Cita:

C:\Documents and Settings\xxx\Configuración local\Datos de programa\Identities\

xxx = nombre de usuario de windows
cuando se crea una cuenta en el outlook express automaticamente se crea una capeta en el path q indico arriba y el nombre de esta carpeta coninside con las claves q se ve en el registro esto aparentemente es asi para cada usuario de windows que tenga configurada una cuenta OE

¿Y si estamos usando otro programa de correo (Thunderbird u Opera) u otro sistema operativo (Linux)?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola angel en ese caso creo que no vale MAPI jejej (definitivamente no va), creo que si uno quiere algo multiplataforma thunderbird es la opcion correcta, abria que ver las API de thunderbird, yo estube mirando un poco y no esta muy facil pero creo q el codigo fuente esta disponible. y eso es una gran ventaja. yo nesecitaba una solucion rapida y la que me indico _Leo fue de lujo, tengo intensiones de seguir viendo el tema por el lado de thunderbird si llego a algo consistente lo voy a postear.
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Gracias por la respuesta. Tengo echarle un ojo al tema del Thunderbird, pero los protocolos son los mismos con Outlook y con Thunderbird.

Otra cosa. En el código de Leo:
Código:
ZeroMemory(&MapiRecipDesc, sizeof(MapiRecipDesc));
MapiRecipDesc.ulRecipClass = MAPI_TO;
MapiRecipDesc.lpszName = "Nombre destinatario";
MapiRecipDesc.lpszAddress = "email@destinatario.com";

He estado leyendo la ayuda de MapiRecipDesc, y no me han quedado muy claros algunos valores. Veo que hay MAPI_TO, MAPI_CC, etc. Si tengo que enviar el mismo correo a dos direcciones, ¿bastaría con ponerlas separadas por coma en lpszAddress o hay que hacer algo más?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Angel escribió:
Veo que hay MAPI_TO, MAPI_CC, etc. Si tengo que enviar el mismo correo a dos direcciones, ¿bastaría con ponerlas separadas por coma en lpszAddress o hay que hacer algo más?

Solo tienes que crear un array de 'TMapiRecipDesc' y rellenar cada elemento, lo de MAPI_TO, MAPI_CC... es para que puedas ponerlo en la zona de cabecera que prefieras:
Código:
    // Añadir: #include <MAPI.HPP>

    TMapiRecipDesc MapiRecipDesc[2] = {0};  // <--
    MapiRecipDesc[0].ulRecipClass = MAPI_TO;
    MapiRecipDesc[0].lpszName = "Nombre destinatario1";
    MapiRecipDesc[0].lpszAddress = "email1@destinatario.com";
    MapiRecipDesc[1].ulRecipClass = MAPI_TO;
    MapiRecipDesc[1].lpszName = "Nombre destinatario2";
    MapiRecipDesc[1].lpszAddress = "email2@destinatario.com";

    TMapiMessage MapiMessage = {0};
    MapiMessage.lpszSubject = "Titulo del mensaje";
    MapiMessage.lpszNoteText = "Texto del mensaje\nEsto es una prueba";
    MapiMessage.nRecipCount = 2;  // <--
    MapiMessage.lpRecips = MapiRecipDesc;

    UINT error = MapiSendMail(0, reinterpret_cast<UINT>(Application->Handle),
        MapiMessage, MAPI_DIALOG | MAPI_LOGON_UI | MAPI_NEW_SESSION, 0);

    if (error)
        throw Exception("Error: No ha sido posible enviar el mensaje");
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias Leo. Lo probaré.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Bueno. Ya he hecho alguna prueba, y al margen de tener que pulirlo para mis necesidades la rutina es muy buena por lo sencilla. Sólo unas dudas que la ayuda de Builder no me ha resuelto. En la función MapiSendMail hay varios parámetros que no acabo de comprender:

1. MAPI_DIALOG: Tal cual explica la ayuda abre un cuadro de diálogo para indicar destinatarios y otros parámetros. En este caso, que ya lo ponemos, ¿haría falta?
2. MAPI_LOGON_UI: Habla en la ayuda de que MAPISaveMail ignora este parámetro si MessageID está vacío. ¿Qué es MEssageID? ¿Dónde se define?

Al probar la rutina me ha ocurrido que se abre automáticamente el cliente de correo (en mi caso, en el trabajo Notes) Ya he visto que es para darle luego al botón de enviar ¿Se puede evitar esto y que se envíe automáticamente?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Angel escribió:
1. MAPI_DIALOG: Tal cual explica la ayuda abre un cuadro de diálogo para indicar destinatarios y otros parámetros. En este caso, que ya lo ponemos, ¿haría falta?

Haría falta en caso de que quieras que se muestre el mensaje compuesto antes de enviarlo para que el usuario vea lo que se está intentando enviar y a quien.

Angel escribió:
2. MAPI_LOGON_UI: Habla en la ayuda de que MAPISaveMail ignora este parámetro si MessageID está vacío. ¿Qué es MEssageID? ¿Dónde se define?

Esto es necesario porque algunos clientes de correo podrían requerir que te autentifiques antes de usarlos, al ponerlo hace que nos lo pida si es necesario, si no lo ponemos y fuese necesario no hace nada y nos devuelve un error.

‘MessageID’ es un parámetro que se usa en la función ‘MAPISaveMail’ y que sirve para identificar nuestro mensaje, con esto podríamos buscarlo, sobreescribirlo etc... En este ejemplo no se usa para nada.

Angel escribió:
Al probar la rutina me ha ocurrido que se abre automáticamente el cliente de correo (en mi caso, en el trabajo Notes) Ya he visto que es para darle luego al botón de enviar ¿Se puede evitar esto y que se envíe automáticamente?

Como le decia mas arriba a Tor:
"Si no quieres que muestre el email en pantalla puedes quitar en el código anterior lo siguiente: "MAPI_DIALOG | MAPI_LOGON_UI", aunque aun así seguirá pidiendo permiso al usuario."

Esto no evita que el cliente de correo por seguridad muestre alguna información de que se está intentando enviar algo y que pida permiso al usuario antes de hacerlo. En el caso del 'Outlook Express' ya ha dicho Tor más arriba como lo ha deshabilitado, en el caso de 'Notes' no se como se deshabilitaría y si lo permite, tendrías que mirar su configuración.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Salen de la bandeja de salida y regresa a la de entrada con este mensaje

Cita:

Algunos de los destinatarios no recibieron su mensaje.

Asunto: TURNO 000465 CAJA 01
Enviado el: 08/08/2008 21:37

No se puede localizar a los destinatarios siguientes:

'xolga@hotmail.com' en 08/08/2008 21:37
Ninguna de las cuentas de correo electrónico pudo enviar a este destinatario

el codigo es
Código:

bool EnviarEmail(AnsiString sDestinatario,AnsiString sTitulo,AnsiString sMensaje,AnsiString sAdjunto)
{

bool ret=true;
MapiMessage MapiMessage;
TMapiRecipDesc MapiRecipDesc;
//TMapiFileDesc MapiFileDesc;
Cardinal MError;

ZeroMemory(&MapiRecipDesc, sizeof(MapiRecipDesc));
MapiRecipDesc.ulRecipClass = MAPI_TO;
//MapiRecipDesc.lpszName = sDestinatario.c_str();;
//MapiRecipDesc.lpszAddress = sDestinatario.c_str();

MapiRecipDesc.lpszName = sDestinatario.c_str();
MapiRecipDesc.lpszAddress = sDestinatario.c_str();

//ZeroMemory(&MapiFileDesc, sizeof(MapiFileDesc));
//if(sAdjunto!="")
 // MapiFileDesc.lpszPathName = sAdjunto.c_str();

ZeroMemory(&MapiMessage, sizeof(MapiMessage));
MapiMessage.lpszSubject = sTitulo.c_str();
MapiMessage.lpszNoteText = sMensaje.c_str();
MapiMessage.nRecipCount = 1;
MapiMessage.lpRecips = &MapiRecipDesc;
//MapiMessage.nFileCount = 1;
//MapiMessage.lpFiles = &MapiFileDesc;


/*   MError = MapiSendMail(0, reinterpret_cast<unsigned>(Application->Handle),
             MapiMessage,  MAPI_NEW_SESSION, 0);

  */
 
 /*   UINT error = MapiSendMail(0, reinterpret_cast<UINT>(Application->Handle),
        MapiMessage, MAPI_DIALOG | MAPI_LOGON_UI | MAPI_NEW_SESSION, 0);
*/
    UINT error = MapiSendMail(0, reinterpret_cast<UINT>(Application->Handle),
        MapiMessage,MAPI_LOGON_UI | MAPI_NEW_SESSION, 0);


return ret;
}


_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Hace tiempo estuve investigando este tema. Me quedó claro que se podía hacer con OutLook pero me quedó la duda si se puede hacer via web desde cuentas de correo tipo hotmail o gmail.

Me imagino que será imprescindible el uso de peticiones HTTP, pero no lo he probado.

¿Alguien tiene experiencia en este tema?

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.