In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
TMapi y dos cuentas de correo
TMapi y dos cuentas de correo
Hola,
Tengo una aplicación desde la cual mando correos electrónicos perfectamente
utilizando la clase tmapi, pero ahora me surge un problema.
Uno de los clientes a los que se le envían email, nos exige que se los mandemosa
través de una cuenta de correo adicional que nos ha proporcinado él.
Con mapi creo que sólo puedo enviar correos por la cuenta predeterminada
en Outlook express, con lo cual todos los correos ha este cliente me los
devuelven.
¿Se os ocurre cómo puedo hacer para enviar unos correos a través de la cuenta
predeterminada y otros a través de otra cuenta que sí tengo configurada en
el OE pero no es la predeterminada?
¿Tenéis algún ejemplo de envío de emails por OLE u otro método distinto?
Un saludico,
Fredy
Tengo una aplicación desde la cual mando correos electrónicos perfectamente
utilizando la clase tmapi, pero ahora me surge un problema.
Uno de los clientes a los que se le envían email, nos exige que se los mandemosa
través de una cuenta de correo adicional que nos ha proporcinado él.
Con mapi creo que sólo puedo enviar correos por la cuenta predeterminada
en Outlook express, con lo cual todos los correos ha este cliente me los
devuelven.
¿Se os ocurre cómo puedo hacer para enviar unos correos a través de la cuenta
predeterminada y otros a través de otra cuenta que sí tengo configurada en
el OE pero no es la predeterminada?
¿Tenéis algún ejemplo de envío de emails por OLE u otro método distinto?
Un saludico,
Fredy
TMapi y dos cuentas de correo
Fredy,
la respuesta corta es que no es posible, la larga es que ya veremos.
Se me ocurren varias posibilidades aunque no puedo asegurarte que alguna
funcione porque la información que encuentro es escasa.
1) Tocando la configuración de Outlook:
* Prueba configurando OE para que funcione en modo "Internet Mail":
Herramientas > Servicios > Envios
* En algunas versiones, no sé si funciona con todas, se puede definir
para un email la cuenta por la que se enviará. El "pero" es que si
funciona, debes hacer los ajustes desde fuera de la aplicación.
* Esta es de la MSDN: "Outlook Express' implementation of Simple MAPI
always uses the default account. There's no way to make it use another."
Pero también dice que si tienes Outlook instalado en modo Corporate o
Grupo de Trabajo se pueden crear varios perfiles MAPI y elegir uno
cuando llamas a oMail:Logon( ... ).
2) Con código:
* Añadir el destinatario con oMail:AddReceipt( "nombre", "direccion",
mapiORIGINATOR ). Quizá también con mapiCC.
* MS es predecible y supongo que Outlook guarda las cuentas disponibles
en el registro del sistema o en algún archivo INI. Si es así, podrías
usar la clase TRegistry()/TIni() para leer el nombre de la cuenta
predeterminada, guardarlo, cambiarlo por el que quieras, enviar el
mensaje y restaurar.
* También podrías usar las clases TIP de xHarbour que están basadas en
sockets y enviar el correo a través de un servidor SMTP pero nunca las
he utilizado.
> ¿Tenéis algún ejemplo de envío de emails por OLE u otro método distinto?
Para usar OLE tendrás que hacerlo con una versión de Outlook que no sea
Express. Quizá sea mejor usar CDO que creo que está soportado a partir
de W98 en todos los Outlook/Windows.
Si no funciona ninguna de estas y necesitas que te eche un cable con
esto, no dudes en decírmelo e intentamos buscar una solución.
Saludos,
José Lalín
la respuesta corta es que no es posible, la larga es que ya veremos.
Se me ocurren varias posibilidades aunque no puedo asegurarte que alguna
funcione porque la información que encuentro es escasa.
1) Tocando la configuración de Outlook:
* Prueba configurando OE para que funcione en modo "Internet Mail":
Herramientas > Servicios > Envios
* En algunas versiones, no sé si funciona con todas, se puede definir
para un email la cuenta por la que se enviará. El "pero" es que si
funciona, debes hacer los ajustes desde fuera de la aplicación.
* Esta es de la MSDN: "Outlook Express' implementation of Simple MAPI
always uses the default account. There's no way to make it use another."
Pero también dice que si tienes Outlook instalado en modo Corporate o
Grupo de Trabajo se pueden crear varios perfiles MAPI y elegir uno
cuando llamas a oMail:Logon( ... ).
2) Con código:
* Añadir el destinatario con oMail:AddReceipt( "nombre", "direccion",
mapiORIGINATOR ). Quizá también con mapiCC.
* MS es predecible y supongo que Outlook guarda las cuentas disponibles
en el registro del sistema o en algún archivo INI. Si es así, podrías
usar la clase TRegistry()/TIni() para leer el nombre de la cuenta
predeterminada, guardarlo, cambiarlo por el que quieras, enviar el
mensaje y restaurar.
* También podrías usar las clases TIP de xHarbour que están basadas en
sockets y enviar el correo a través de un servidor SMTP pero nunca las
he utilizado.
> ¿Tenéis algún ejemplo de envío de emails por OLE u otro método distinto?
Para usar OLE tendrás que hacerlo con una versión de Outlook que no sea
Express. Quizá sea mejor usar CDO que creo que está soportado a partir
de W98 en todos los Outlook/Windows.
Si no funciona ninguna de estas y necesitas que te eche un cable con
esto, no dudes en decírmelo e intentamos buscar una solución.
Saludos,
José Lalín
TMapi y dos cuentas de correo
Hola,
Creo que lo más sencillo será modificar el registro de windows para cambiar
la cuenta por defecto.
El problema es que no tengo ni idea de cómo usar TRegistry.
El dato se almacena en
HKEY_CURRENT_USER/Software/Microsoft/Internet Account Manager
En Default Mail Account indica la cuenta por defecto de OE (00000001, 0000002,
etc)
¿Podéis poner algún ejemplo de cómo hacer para cambiar este dato?
Un saludico,
Fredy
Creo que lo más sencillo será modificar el registro de windows para cambiar
la cuenta por defecto.
El problema es que no tengo ni idea de cómo usar TRegistry.
El dato se almacena en
HKEY_CURRENT_USER/Software/Microsoft/Internet Account Manager
En Default Mail Account indica la cuenta por defecto de OE (00000001, 0000002,
etc)
¿Podéis poner algún ejemplo de cómo hacer para cambiar este dato?
Un saludico,
Fredy
TMapi y dos cuentas de correo
Fredy
La estoy utilizando... a ver si esto te sirve para cambiar la clave...
//Establecer
WITH OBJECT TRegistry():New()
:Root := HKEY_CURRENT_USER
If :OpenKey( "Software/Microsoft/Internet Account Manager" ) = 0
cGuardaMail := :GetString( "Default Mail Account" )
:SetString( "Default Mail Account", cMail )
:CloseKey()
EndIf
END
//Restaurar
WITH OBJECT TRegistry():New()
:Root := HKEY_CURRENT_USER
If :OpenKey( "Software/Microsoft/Internet Account Manager" ) = 0
:SetString( "Default Mail Account", cGuardaMail )
:CloseKey()
EndIf
END
Un Saludo,
Xevi.
"Fredy" <fredy@navegandoconxailer.com> escribió en el mensaje
news:[email=a20b86f270158c8373562946791@news.xailer.com...]a20b86f270158c8373562946791@news.xailer.com...[/email]
> Hola,
>
> Creo que lo más sencillo será modificar el registro de windows para
> cambiar la cuenta por defecto.
>
>
> El problema es que no tengo ni idea de cómo usar TRegistry.
>
> El dato se almacena en HKEY_CURRENT_USER/Software/Microsoft/Internet
> Account Manager
> En Default Mail Account indica la cuenta por defecto de OE (00000001,
> 0000002, etc)
>
> ¿Podéis poner algún ejemplo de cómo hacer para cambiar este dato?
>
>
> Un saludico,
> Fredy
>
>
La estoy utilizando... a ver si esto te sirve para cambiar la clave...
//Establecer
WITH OBJECT TRegistry():New()
:Root := HKEY_CURRENT_USER
If :OpenKey( "Software/Microsoft/Internet Account Manager" ) = 0
cGuardaMail := :GetString( "Default Mail Account" )
:SetString( "Default Mail Account", cMail )
:CloseKey()
EndIf
END
//Restaurar
WITH OBJECT TRegistry():New()
:Root := HKEY_CURRENT_USER
If :OpenKey( "Software/Microsoft/Internet Account Manager" ) = 0
:SetString( "Default Mail Account", cGuardaMail )
:CloseKey()
EndIf
END
Un Saludo,
Xevi.
"Fredy" <fredy@navegandoconxailer.com> escribió en el mensaje
news:[email=a20b86f270158c8373562946791@news.xailer.com...]a20b86f270158c8373562946791@news.xailer.com...[/email]
> Hola,
>
> Creo que lo más sencillo será modificar el registro de windows para
> cambiar la cuenta por defecto.
>
>
> El problema es que no tengo ni idea de cómo usar TRegistry.
>
> El dato se almacena en HKEY_CURRENT_USER/Software/Microsoft/Internet
> Account Manager
> En Default Mail Account indica la cuenta por defecto de OE (00000001,
> 0000002, etc)
>
> ¿Podéis poner algún ejemplo de cómo hacer para cambiar este dato?
>
>
> Un saludico,
> Fredy
>
>
TMapi y dos cuentas de correo
Fredy,
el ejemplo que ha puesto Xevi es exactamente como deber hacerlo y ya que
estamos, aprovecho para decirte que trabajar con el registro es como
trabajar con archivos INI.
Por cierto, si te funciona no te olvides de enviarme el código y así
añado un nuevo método SetAccount()/SetDefaultAccount() a TMapi.
Saludos,
José Lalín
el ejemplo que ha puesto Xevi es exactamente como deber hacerlo y ya que
estamos, aprovecho para decirte que trabajar con el registro es como
trabajar con archivos INI.
Por cierto, si te funciona no te olvides de enviarme el código y así
añado un nuevo método SetAccount()/SetDefaultAccount() a TMapi.
Saludos,
José Lalín
TMapi y dos cuentas de correo
Hola Xevi!,
Va perfecto, salvo que las barras de separación son "las otras".
El OpenKey tiene que ser:
>> If :OpenKey( "SoftwareMicrosoftInternet Account Manager" ) = 0
Yo me había olvidado de establecer el Root y por eso estaba tan perdido.
Gracias.
Un saludico,
Fredy
Va perfecto, salvo que las barras de separación son "las otras".
El OpenKey tiene que ser:
>> If :OpenKey( "SoftwareMicrosoftInternet Account Manager" ) = 0
Yo me había olvidado de establecer el Root y por eso estaba tan perdido.
Gracias.
Un saludico,
Fredy
TMapi y dos cuentas de correo
Fredy,
> Va perfecto, salvo que las barras de separación son "las otras".
Claro... jejeje, me he limitado a hacer un Copy/Paste tal como me has
escrito donde se almacenan las claves, y no he parado atención en la
dirección de las barras...
Me alegro que te funcione!!!.
Asi pues, José Lalín ¿puedes incorporar esos dos métodos a la clase?
Un Saludo,
Xevi.
"Fredy" <fredy@navegandoconxailer.com> escribió en el mensaje
news:[email=a20b86f270bb8c83765dfa82189@news.xailer.com...]a20b86f270bb8c83765dfa82189@news.xailer.com...[/email]
> Hola Xevi!,
>
> Va perfecto, salvo que las barras de separación son "las otras".
>
> El OpenKey tiene que ser:
>
>>> If :OpenKey( "SoftwareMicrosoftInternet Account Manager" ) = 0
>
> Yo me había olvidado de establecer el Root y por eso estaba tan perdido.
> Gracias.
>
> Un saludico,
> Fredy
>
>
> Va perfecto, salvo que las barras de separación son "las otras".
Claro... jejeje, me he limitado a hacer un Copy/Paste tal como me has
escrito donde se almacenan las claves, y no he parado atención en la
dirección de las barras...
Me alegro que te funcione!!!.
Asi pues, José Lalín ¿puedes incorporar esos dos métodos a la clase?
Un Saludo,
Xevi.
"Fredy" <fredy@navegandoconxailer.com> escribió en el mensaje
news:[email=a20b86f270bb8c83765dfa82189@news.xailer.com...]a20b86f270bb8c83765dfa82189@news.xailer.com...[/email]
> Hola Xevi!,
>
> Va perfecto, salvo que las barras de separación son "las otras".
>
> El OpenKey tiene que ser:
>
>>> If :OpenKey( "SoftwareMicrosoftInternet Account Manager" ) = 0
>
> Yo me había olvidado de establecer el Root y por eso estaba tan perdido.
> Gracias.
>
> Un saludico,
> Fredy
>
>
TMapi y dos cuentas de correo
Hola José,
Con el pequeño cambio que le he comentado a Xevi, va perfecto.
La única pega es que OE llama a las cuentas "00000001", "00000002", etc.
en lugar de por el "Account name".
A mí, como me corre prisa, me sirve de momento con establecer la cuenta por
defecto a la "0000002", pero lo chulo sería poder hacer un SetAccount("Fredy")
en lugar de SetAccount("00000001")
Ahora que ya le he pillado el tranquillo al TRegistry, voy a ver si lo puedo
modificar y te mando el código.
Un saludico,
Fredy
Con el pequeño cambio que le he comentado a Xevi, va perfecto.
La única pega es que OE llama a las cuentas "00000001", "00000002", etc.
en lugar de por el "Account name".
A mí, como me corre prisa, me sirve de momento con establecer la cuenta por
defecto a la "0000002", pero lo chulo sería poder hacer un SetAccount("Fredy")
en lugar de SetAccount("00000001")
Ahora que ya le he pillado el tranquillo al TRegistry, voy a ver si lo puedo
modificar y te mando el código.
Un saludico,
Fredy
TMapi y dos cuentas de correo
Xevi,
> Me alegro que te funcione!!!.
> Asi pues, José Lalín ¿puedes incorporar esos dos métodos a la clase?
En cuanto Fredy me envie el código y hagamos algunas pruebas lo tendréis
disponible.
Saludos,
José Lalín
> Me alegro que te funcione!!!.
> Asi pues, José Lalín ¿puedes incorporar esos dos métodos a la clase?
En cuanto Fredy me envie el código y hagamos algunas pruebas lo tendréis
disponible.
Saludos,
José Lalín
TMapi y dos cuentas de correo
Fredy,
> Con el pequeño cambio que le he comentado a Xevi, va perfecto.
Genial.
> La única pega es que OE llama a las cuentas "00000001", "00000002", etc.
> en lugar de por el "Account name".
> A mí, como me corre prisa, me sirve de momento con establecer la cuenta
> por defecto a la "0000002", pero lo chulo sería poder hacer un
> SetAccount("Fredy") en lugar de SetAccount("00000001")
¿ Puedes mirar si hay algún lugar del registro donde se guarden los
nombres también ? Quizá puedan estar en algún archivo INI en el
directorio de instalación del Outlook.
> Ahora que ya le he pillado el tranquillo al TRegistry, voy a ver si lo
> puedo modificar y te mando el código.
Ok.
Saludos,
José Lalín
> Con el pequeño cambio que le he comentado a Xevi, va perfecto.
Genial.
> La única pega es que OE llama a las cuentas "00000001", "00000002", etc.
> en lugar de por el "Account name".
> A mí, como me corre prisa, me sirve de momento con establecer la cuenta
> por defecto a la "0000002", pero lo chulo sería poder hacer un
> SetAccount("Fredy") en lugar de SetAccount("00000001")
¿ Puedes mirar si hay algún lugar del registro donde se guarden los
nombres también ? Quizá puedan estar en algún archivo INI en el
directorio de instalación del Outlook.
> Ahora que ya le he pillado el tranquillo al TRegistry, voy a ver si lo
> puedo modificar y te mando el código.
Ok.
Saludos,
José Lalín
TMapi y dos cuentas de correo
Fredy, Xevi,
acabo de terminar de implementar el manejo de cuentas de correo de
Outlook en TMapi. Lo he hecho de modo que se pueda trabajar directamente
con el nombre.
* He añadido una nueva propiedad :cAccount que devuelve o establece el
nombre de la cuenta con la que se quiere trabajar. Creo que es más
sencillo y más cómodo usar la propiedad que métodos GetAccount() y
SetAccount().
Fijaros que esta propiedad devuelve el nombre real de la cuenta, por
ejemplo: "Trabajo" y no "0000001" como hacía la función que usa Fredy.
* También hay un nuevo método :GetAccountNames( lSorted ) que devuelve
un array con los nombres de todas las cuentas y opcionalmente lo ordena.
Este método puede ser útil para casos como el de Fredy, ya que permitirá
mostrar los nombres de las cuentas en un Combo y dejar que el usuario
seleccione la que quiera.
Un pequeño ejemplo de uso de cómo trabajar con una cuenta que no sea la
principal y cómo restaurarla al terminar:
//---
METHOD Test() CLASS TForm1
LOCAL cAccount
WITH OBJECT TMapi():New()
// Guardamos el nombre de la cuenta por defecto
cAccount := :cAccount
// Establecemos la cuenta de trabajo
:cAccount := "ElNombreDeLaCuenta"
// Configuramos y enviamos el correo
:Send()
// Restauramos la cuenta por defecto
:cAccount := cAccount
END
RETURN Nil
//---
NOTA: En caso de que Outlook esté instalado en modo "Grupo de trabajo"
quizá haya que hacer un pequeño cambio en la clase para que se conecte
al servidor y recoja la información desde ahí. Si alguien lo necesita,
que lo comente en el foro.
Saludos,
José Lalín
acabo de terminar de implementar el manejo de cuentas de correo de
Outlook en TMapi. Lo he hecho de modo que se pueda trabajar directamente
con el nombre.
* He añadido una nueva propiedad :cAccount que devuelve o establece el
nombre de la cuenta con la que se quiere trabajar. Creo que es más
sencillo y más cómodo usar la propiedad que métodos GetAccount() y
SetAccount().
Fijaros que esta propiedad devuelve el nombre real de la cuenta, por
ejemplo: "Trabajo" y no "0000001" como hacía la función que usa Fredy.
* También hay un nuevo método :GetAccountNames( lSorted ) que devuelve
un array con los nombres de todas las cuentas y opcionalmente lo ordena.
Este método puede ser útil para casos como el de Fredy, ya que permitirá
mostrar los nombres de las cuentas en un Combo y dejar que el usuario
seleccione la que quiera.
Un pequeño ejemplo de uso de cómo trabajar con una cuenta que no sea la
principal y cómo restaurarla al terminar:
//---
METHOD Test() CLASS TForm1
LOCAL cAccount
WITH OBJECT TMapi():New()
// Guardamos el nombre de la cuenta por defecto
cAccount := :cAccount
// Establecemos la cuenta de trabajo
:cAccount := "ElNombreDeLaCuenta"
// Configuramos y enviamos el correo
:Send()
// Restauramos la cuenta por defecto
:cAccount := cAccount
END
RETURN Nil
//---
NOTA: En caso de que Outlook esté instalado en modo "Grupo de trabajo"
quizá haya que hacer un pequeño cambio en la clase para que se conecte
al servidor y recoja la información desde ahí. Si alguien lo necesita,
que lo comente en el foro.
Saludos,
José Lalín