Enviar email usando OUTLOOK 2003
Hola, en una aplicación hecha con DELPHI 6 tengo un problema para enviar correos electrónicos usando outlook 2003, hasta la fecha todos los clientes tenian la misma versión y los enviaba sin problemas, pero ahora algunos han cambiado a OutLook 2003 y no les funciona.
Alguien puede decirme como enviar mesajes con OUTLOOK 2003 y como se puede discriminar si el usuario esta trabajando con OUTLOOK 2002 o 2003, para utilizar uno u otro procedimiento. Adjunto un ejemplo del procedimiento utilizado hasta la fecha para enviar mensajes con anexos usando OUTLOOK 2002. Muchas gracias, y un saludo a todos Jose Manuel. Código:
procedure TForm1.Button16Click(Sender: TObject); |
¿y si utilizas el shellExec con un comando mailto ?
|
Utilizando el comando MAILTO, no se podría adjuntar anexos y en este caso es muy importante que en cada correo se adjunte un fichero anexo.
Código:
procedure TForm1.Button1Click(Sender: TObject); |
¿quién dice que no se pueden adjuntar archivos?
|
Creo que sería más práctico, que si sabes la respuesta la pongas en el foro.
La pregunta no era si MAILTO podía enviar anexos (Hay respuesta para esto en varios foros que dicen que no es posible), sino que utilizando el código del ejemplo que ajunte en el primer mensaje, funciona perfectamente para enviar correos electrónicos con anexos en OUTLOOK 2002, pero da error en usuarios con OUTLOOK 2003. Muchas gracias por tu interes. Jose Manuel. |
Hombre, no te lo tomes a mal ;)
Según aquí, dicen que si se puede. Mi recomendación de usar el shellexecute es porque de esta forma no tienes que preocuparte por si tiene outlook exprees, 2000, 2003, edora, o lo que sea, con shellexecute se abrirá el correo predeterminado. Por eso creo que la solución a tu problema sería utilizar el shellexecute. Cita:
Puntos clave (1) El adjunto (&Attach) debe estar al final (2) la ruta y el nombre del archivo se definen por separado por comillas (3) No todos aceptan archivos adjuntos, pero esto funciona con Outlook 97 & 2000. Podrías probarlo con el 2003 Fuente: steve dabrosca |
Lo que dice ContraVeneno funciona perfecto...pero se puede attachar mas de un archivo ??
Vengo probando desde hace varios días y no le encuentro la vuelta...alguna sabe si se puede ?? Desde ya gracias. |
enviar email usando OUTLOOK 2003
Tengo una duda, como se le pasaria a shellexecute() el parametro para el cuerpo del email, podiendo poner distintos tamaños, colres y fuentes de letras, y tambien poder poner una imagen (logo) en el cuerpo.
Muchas gracias. |
Hasta donde tengo conocimiento, tendrías que convertir un texto a HTML para que tuviera formato. Y con este texto con formato, se puede enviar el correo.
http://www.clubdelphi.com/foros/showthread.php?t=18819 Fuera de eso, alguien podría tener una mejor idea |
Hola a todos. Me gustaría saber como lo tendría que hacer para que además de envíar el correo usando outlook 2003, pues quiero incluir un archivo html pero que salga como fondo. Mi intención es que no salga el html como adjunto, sino que cuando lo vaya a leer el cliente, ya vea directamente el archivo que le envío. Actualmente lo estoy haciendo seleccionando el archivo html como diseño de fondo pero me gustaría hacerlo automático desde delphi, gracias.
|
|
Problema
El problema que yo me encontre usando esto, es que no puedo cambiar la direccion de correo, subject o body en tiempo de ejecucion.
|
Reabro hilo
Muchachos, no es broma, pero me cansé de probar varios metodos aquí publicados para mandar un simple email con un archivo adjunto y no anda, no pido colores, negritas, italicas, nada de nada. Simplemente un email xxx@xxx.com con un PDF generado por mi sistema y no anda. Vi discusiones sobre outlook, bien, me abre el outlook con subject y todos los datos parametrizados pero y el adjunto... se lo llevaron los marcianos ???
El ShellExecute con adjuntos no anda(ó al menos no logré que ande), quien diga lo contrario pido la linea de codigo y la pruebo. Gente, No puede ser que el sistema abra outlook, pone email, subject y que despues el usuario tenga que ir manualmente a buscar el archivo a adjuntar, esto es lamentable! En fin Jose Manuel, si lograste hacerlo, pasame por favor el metodo u ejemplo, que será muy bien agradecido. Muchas gracias!!! Walter del país de la 8 maravilla!!! |
STFW, RTFM |
declaracion de variables
*Contraveneno*
Las variables Body, Archivo y CC son todas del tipo PChar ? En tu ej. no veo conversiones de ningun tipo pero como concatenas las cadenas de caracteres sin errores ? Yo no usaba ShellExec, sino ShellExecute, que esta sí la encontre en la ShellApI, estamos hablando de la misma función ?. No encontré en que unit está esta. Sigo probando a ver que sale. Saludos y muchas gracias!!! |
archivo, body y cc son te tipo cadena... string en ingles...
|
Nuevamente yo, y gracias por la paciencia
Acá te copio la rutina:
Var MailTo:String; Body:String; Archivo:String; CC:String; begin MailTo := 'war.ramos@yahoo.com'; Body := 'NOBODY(No Body)'; Archivo := 'c:\wall_cel_CBR600RR_176x220.jpg'; CC := 'waly2k1@hotmail.com'; ShellExecute( Self.Handle, 'open', PChar( 'mailto:' + Trim( MailTo ) + '?subject=' + 'Reporte de Servicio Diario' + '&body=' + Body + CC + '&Attach="' + Archivo + '"' ), '', '', SW_SHOW ); Esto es el resultado: Destino, asunto está bien, el cuerpo queda así NOBODY(No Body)waly2k1@hotmail.com Si observas convierto toda la cadena de string a PChar(), sino no funciona la copia CC aparece en el body, supongo porque no posee un indicador y no adjunta la imagen. Esto lo estoy probando con Outlook Express Saludos y muchas gracias por tu tiempo. |
pues síguele probando, porque tal cual como lo puse yo, así lo estoy usando y nunca he tenido problemas para enviar un correo con un archivo adjunto.
Debes de tener el problema en algún otro lado, a mi me funciona perfectamente. |
To be continued...
Segun tu ejemplo en esta linea no te funcionaría salvo que nunca
uses CC, sino concatena al body el email q pasas en CC. Código:
'&body='+Body+ Código:
'&body=' + Body + convertir antes de pasar toda la cadena, sino te da error y no compila la aplicación. El ejemplo de la web es de Outlook 2000, tengo 2003 y no funciona tampoco en outlook express, mi SO Win2K SP4 Quedó bárbaro el codigo, pero simplemente no adjunta archivos. Paso para que alguien vea y pueda echar una mano. Saludos y gracias por el tiempo. Otra vez será!!! Código:
procedure TfrmMain.mnuSendMail(Sender: TObject); |
el día que quieras, te invito a que pases a alguna computadora que este utilizando el sistema donde uso esa línea para que veas que si funciona...
tiene más de 1 año funcionando y enviando correos y hasta ahora no he recibido queja. Claro, para llenar la variable CC, tengo un If en donde si existe correo alternativo, se agrega el '&CC = "dir-com"'', si no existe, entonces CC := ''; pensé que eso era obvio :confused: pues estaremos hablando de cosas diferentes porque yo no lo cambio a pchar... como dije, así tal cuál puse el shellexec, el correo se envía con un archivo adjunto. |
Todo bien
Ok ok, ya no pongo en duda nada, tampoco me haré un viajecito de miles de Km. para ver si funciona tu ejemplo hehe.
Estoy con Delphi 7 y la API que uso es Shellexecute no shellexec como dices tu. La linea en cuestion claro le faltaba algo. Bueno viejo, saludos y muchas gracias. Por el momento pruebo con otras cosas. |
Acabo de leer este hilo y luego de probar, a mí tampoco me sirve lo de attach. hasta ahora solo he utilizado los comandos con "Ejecutar" de "Inicio->Ejecutar". Sin envargo, no creo que sea algo del cliente de correo, porque si le hago un "Enviar por correo" en openoffice o word, el nuevo mensaje mensaje muestra el archivo adjunto.
Supongo que lo de "&Attach" debe ser con otro nombre o en otro caso se debe de utilizar de forma distinta. PD: utilizo thunderbird y también he probado ingresando etiquetas html sencillas al body y me han servido. |
Ajam
Desde luego, lo probé de todas formas y no logré que funcione con archivos adjuntos. Por el momento 'colgué' el tema para seguir insistiendo mas adelante. Si sabes algo al respecto te pido lo postees aquí.
Saludos. |
Claro, aunque en este momento no me estoy dedicando al tema al 100%, estoy trabajando en otro proyecto. De todos modos, si consigo algo, lo publico.
|
contra veneno, tengo un problema con la solucion que pusiste, me abre una ventana para enviar el mail, pero no seria posible que directamente lo enviara???, probe alternativas y nunca pude hacer que lo mandara directamente
PD: yo tambien lo tuve que convertir a pchar y usar shellexecute, sino no funciona |
|
Hola! luego de buscar y buscar parece que he sido un tonto porque la respuesta a este problema era tan sencilla y enfrente de mí, Delphi 7 trae un ejemplo incluido ("Win2000 logo application").
El API que nos interesaba se llama MAPI. Existen dos tipos distintos de MAPI, uno es "MAPI Simple" y el otro "MAPI extendido", este último solo lo soporta Outlook (no el express), la versión simple es soportada por la gran mayoría de clientes de correo. en http://www.torry.net/pages.php?id=204 podrás encontrar varios controles que facilitan el trabajo para utilizar esta API, ya que en estado nativo puede ser un poco complicada en especial para novatos como yo. Solamente he utilizado AFQuickMail v.2.1 el cual solo soporta MAPI simple, pero con él puedes enviar archivos adjuntos y te da la opción de mostrarle al usuario la interfaz de redacción de un nuevo mensaje. Viene con un ejemplo compilado que te mostrará la facilidad de utilizar este componente. El único problema de utilizar MAPI Simple es que no puedes enviar mensajes en HTML, pero si tu cliente utiliza Thunderbird, este no es un problema ya que el pájaro interpreta el código HTML pasado como parámentro y lo convierte automáticamente a texto rico. Otra alternativa por medio de COM con Outlook puedes encontrarla acá |
Sigo sin conseguirlo
Buenas.
Como he dicho siguo sin coserguirlo.... he seguido a pie de letra todas las instrucciones. Siempre cuando envio por OUTLOOK2003 por cada mensaje que envio me sale : Un programa está intentando enviar correo electrónico automáticamente en su nombre. ¿Desea permitirlo? Si esto es inesperado, puede que sea un virus y deberia elegir NO. SI NO AYUDA. Esto sale por cada email que mando... Mi pregunta es la siguiente: ¿Se puede anular esta confirmación? y si es asi. ¿Como la puedo quitar? Tambien lo envia, pero siempre sin adjunto. |
El mensaje que te dice es de OUTLOOK, y no es posible manejarlo en el programa, tienes que buscar una opcion de seguridad de outlook que dice algo asi como " avisar cuando otros programas intenten enviar correo electronico" y desactivarlo
|
Supongo que estás utilizando AFQuickMail.
Pon la propiedad ShowDialog a True, con esta opción se muestra la ventana de redacción de Outlook y no muestra ese molesto mensaje.
Si no quieres utilizar está alternativa (que me parece la mejor) entonces intenta el consejo que te ha dado tocomi |
Tocomi.
Estoy utilizando el OUTLOOK 2003 y no encuentro esa opcion. En Outlook Express se donde esta.. D&W. Estoy utilizando el AFQuickMail, pero imaginate que quiero enviar 100 e-mails de golpe. No puedo estar confirmando 100 veces y luego que me salaga el mensajito de Outlook 2003 y encima el Otulook 2003 no me envia los ficheros adjuntos(solo los reciben los que tiene Outlook 2000, 2002, 2003, etc) |
Tengo Outlook 2007, encontre la opción que mencionaba tocomi en Herramientas -> Centro de Confianza -> Acceso mediante programación. Talvez por ahí es donde puesdes buscar en Outlook 2003.
Con lo que respecta a los adjuntos, ví una opción "Agregar propiedades a datos adjuntos..." en Herramientas -> Centro de Confianza -> Tratamiento de Datos adjuntos, por defecto está deshabilitada, talvez el problema en Outlook 2003 sea esta opción que puede ser prederminada en versiones anteriores. Saludos. |
He instalado en Outlook 2007. He desactivado las opciones y sigue sin funcionar... (En el Outlook 2003, no veo donde estan las opciones), inclusive con el .EXE que viene de ejemplo funciona. Me esta tocando las ......... (con perdon).
Alguna Sugerencia. No se me ocurren mas....... |
En Outlook 2003 puedes buscar en la ayuda donde se encuentra esa opción. Prové en Outlook 2007 y a pesar de cambiar la opción que te habia mencionado, sigue apareciendo el mensaje inclusive con el exe de ejemplo. Seguramente debe ser un bug de outlook, Busca las últimas actualizaciones e intentalo de nuevo.
|
Ole
Si ya no le hayas como hacer, puedes utilizar COM, utilize esté código y me ha funcionado.
Despues solo tienes que hace run Send & receive. |
Hola D&W.
He probado tu codigo y funciona, peroooooooooo me sale las ventanas de Un programa esta intentando obtener acceso a direcciones de correo electronico almacenadas en Outlook. ¿Desea permitirlo? y el de Un programa esta intentando enviar correo electronico automaticamente en su nombre. ¿Desa permitirlo? La primera ventana la he conseguido quitar con el siguiente codigo. procedure TInformeNominas.EnviarCorre_xCOM(const Subject, Body, FileName, SenderName, SenderEMail, RecepientName, RecepientEMail: String); var Outlook: _Application; AFolder : MAPIFolder; ANameSpace : _NameSpace; AMailItem : _MailItem; AAttachments : Attachments; AppWasRunning: boolean; { has Outlook finished } lcid: integer; { User ID } Unknown: IUnknown; Result: HResult; begin lcid := LOCALE_USER_DEFAULT; //----{~~} Result := GetActiveObject(CLASS_OutlookApplication, nil, Unknown); if (Result = MK_E_UNAVAILABLE) or (AppWasRunning) then Outlook := CoOutlookApplication.Create else begin OleCheck(Result); { Make sure the object has been linked } OleCheck(Unknown.QueryInterface(_Application, Outlook)); AppWasRunning := True; { States that excel is now running } end; //Get the namespace ANameSpace := Outlook.Get_Session; //Get the Inbox folder AFolder := ANameSpace.GetDefaultFolder(olFolderInbox); //Show the Inbox folder on screen //AFolder.Display; //Create a new email message AMailItem := (Outlook.CreateItem(olMailItem) as MailItem); AMailItem.To_ := RecepientEMail; AMailItem.Subject := Subject; AMailItem.Body := Body; AAttachments := AMailItem.Get_Attachments; //If the user has entered a file name then attach it if (Length(FileName) > 0) then begin AAttachments.Add(FileName,$00000001 , Length(Body)+1,'Test'); end; AMailItem.Save; AMailItem.Send; MessageDlg('The mail has been sent!',mtinformation,[mbok],0); Outlook.Quit; end; En la USE Outlook2000, ActiveX Pero la ultima pantallita de : Un programa esta intentando enviar correo electronico automaticamente en su nombre. ¿Desa permitirlo? No consiguo quitalar..... Sugerencias... Gracias P.D.: Con este codigo puedo enviar ficheros adjuntos a todos(express, 2000,2002,2003,2007, vista, etc, lo cual antes no podia) |
Recuerdas la opción que te habia mencionado
El probado el código que has posteado, pero no me aparece el menaje de que "Un programa está...", lo único que me sale es "Hay mensaje si enviar, desear enviarlos antes de salir" esto es normal ya que en tu código mandas a cerrar outlook (¿Tienes algún propósito con ello?).
Por otro lado, creo que más bien tu problema radica en otro lugar, recuerdas la opción que te había mencionado de outlook 2007 que se encuentra en el menú: Herramientas -> Centro de Confianza -> Acceso mediante programación Resulta que la opción por defecto dice: "Avisarme sobre activa sospechosa cuando mi programa antivirus esté inactivo o no esté actualizado." La opción por si sola se explica, revisa que Windows esté detectando correctamente el antivirus y que este esté actualizado. (Vista talvez de problemas, no estoy seguro) Seguramente, en versiones anteriores a la del 2007, no existe esta opción ya que requiere el SP2 de XP, por lo tanto, en estas versiones lo único que puedes hacer es deshabilitar la opción de seguridad de <u>Acceso mediando Programación</u>. Saludos. |
Quita la linea
Outlook.Quit; con esto lo solucionas..... Respeto al resto, voy a mirar el Outlook2003, pues la opcion que me dices no la veo por ningun sitio.... tambien instale 2007 y me decia lo mismo. Lo que voy ha hacer es desinstalar el outlook2003 y quitarlo de regedit. Tengo Windows XP SP2 Outlook 2003 Kaspersky Internet Security 6.0 Delphi 6 |
se me olvida...
como deshabilito la opción de seguridad de <u>Acceso mediando Programación</u>. |
Te mandos imágenes de Outlook 2007
Por aquí puedes empezar a buscar en versiones anteriores.
<a href="http://img223.imageshack.us/my.php?image=centroconfianzamenuqp8.jpg" target="_blank">Venta Principal</a> |
La franja horaria es GMT +2. Ahora son las 12:47:34. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi