| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Lun 17 Dic, 2007 4:23 pm Asunto: Colocar email en bandeja de salida de un cliente pop |
|
|
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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Jue 20 Dic, 2007 11:58 pm Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 21 Dic, 2007 12:43 am Asunto: |
|
|
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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Vie 21 Dic, 2007 1:17 am Asunto: |
|
|
Gracias LEO no se como se me paso y no mire en Tips & Tricks, de nuevo gracias  _________________ Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr) |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Vie 21 Dic, 2007 2:12 am Asunto: |
|
|
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
saludos tor _________________ Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr) |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Vie 21 Dic, 2007 3:03 am Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 21 Dic, 2007 2:31 pm Asunto: |
|
|
| 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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Vie 21 Dic, 2007 4:27 pm Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 24 Dic, 2007 11:22 am Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 24 Dic, 2007 3:56 pm Asunto: |
|
|
| 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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 26 Dic, 2007 8:41 am Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 26 Dic, 2007 1:50 pm Asunto: |
|
|
| 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 |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Sab 09 Ago, 2008 3:46 am Asunto: |
|
|
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 |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 10 Ago, 2008 8:44 pm Asunto: |
|
|
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 |
|
 |
|