Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Enviar email usando OUTLOOK 2003 (https://www.clubdelphi.com/foros/showthread.php?t=33778)

waly2k1 06-08-2007 20:45:33

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.

Chris 23-08-2007 20:18:26

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.

waly2k1 23-08-2007 21:07:22

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.

Chris 23-08-2007 21:14:00

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.

tocomi 12-09-2007 20:50:15

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

ContraVeneno 12-09-2007 22:33:26

en este mismo hilo:

http://www.clubdelphi.com/foros/show...3&postcount=11

Chris 02-10-2007 22:41:09

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á


itsi 22-10-2007 16:43:53

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.

tocomi 22-10-2007 20:32:54

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

Chris 23-10-2007 00:19:36

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

itsi 23-10-2007 10:12:43

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)

Chris 23-10-2007 16:35:05

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.

itsi 24-10-2007 09:01:05

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.......

Chris 24-10-2007 20:31:50

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.

Chris 24-10-2007 20:56:29

Ole
 
Si ya no le hayas como hacer, puedes utilizar COM, utilize esté código y me ha funcionado.

Código Delphi [-]
procedure EnviarCorre_xCOM;
const
  olMailItem = 0;
var
  Outlook: OleVariant;
  vMailItem: variant;
begin
  try
    Outlook := GetActiveOleObject('Outlook.Application');
  except
    Outlook := CreateOleObject('Outlook.Application');
  end;
  vMailItem := Outlook.CreateItem(olMailItem);
  vMailItem.Recipients.Add('prueba@hotmail.com');
  vMailItem.Subject := 'Correo de prueba';
  vMailItem.Body := 'Este es un mensaje enviado como prueba';

// Si quieres HTML en el texto
  vMailItem.HTMLBody := 'Este es un mensaje enviado como prueba';
  vMailItem.Attachments.Add('C:\temp\sample.txt'); // Puedes adjuntar archivos
  vMailItem.Send;

  VarClear(Outlook);
end;

Despues solo tienes que hace run Send & receive.

itsi 25-10-2007 17:17:40

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)

Chris 25-10-2007 17:44:20

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.

itsi 25-10-2007 17:52:57

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

itsi 25-10-2007 17:57:30

se me olvida...
como deshabilito la opción de seguridad de <u>Acceso mediando Programación</u>.

Chris 25-10-2007 18:41:36

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 06:39:45.

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