Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   outlook microsoft 2010 (https://www.clubdelphi.com/foros/showthread.php?t=87140)

shoulder 19-11-2014 13:29:48

outlook microsoft 2010
 
Porque teniendo el outlook cerrado tengo que decir al usuario que trabaje con el outlook minimizado para que funcionen todas las sentencias que hice de envio de mail en el programa, delphi 7.

la sentencia que uso para ver si esta abierto y comenzar es esta

Cita:

try
Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;
.......
Si oulook esta minimizado envia mails, los muestra..pero si lo tienen cerrado no lo abre y sale un cartel de error, hay otra forma de activarlo?.
Gracias

pacopenin 19-11-2014 20:53:28

A mi me funciona si problema. ¿Que error sale? ¿En que línea se produce el error? ¿Con qué versión de Outlook estás probando?

shoulder 20-11-2014 14:17:36

Outlook Microsoft 2010
 
Me viene un cartel de delphi "OPERACION ANULADA", ahora de donde saca ese mensaje ni idea. Tengo Outlook Microsoft 2010.

pacopenin 20-11-2014 17:54:50

Yo utilizo éste código y funciona sin problemas en 2007-2010-2013 en varias decenas de instalaciones...

Código Delphi [-]
uses

   OutlookXP,

var
  ol : OutlookXP.TOutLookApplication;
  mi : OutlookXP.TMailItem;
  ns : OutlookXP.NameSpace;
  fdInbox, fdOutbox : OutlookXP.MAPIFolder;
const
 olByValue = 1;

     .......

   try
     ol := OutlookXP.TOutLookApplication.Create(nil);

     ns := ol.GetNamespace('MAPI');
     fdInbox := ns.GetDefaultFolder(olFolderInbox);
     fdOutbox := ns.GetDefaultFolder(olFolderSentMail);

     mi := TmailItem.Create(nil);

     mi.ConnectTo( ol.CreateItem( olMailItem) as MailItem);
     mi.Subject := Datos.ZEMailDESCRIPCION.asstring;

     if Datos.ZEMailPARA.asstring <> '' then
      mi.Recipients.Add(Datos.ZEMailPARA.value);

     if Datos.ZEMailPARA_CC.asstring <> '' then
      mi.CC := Datos.ZEMailPARA_CC.asstring;
     if Datos.ZEMailPARA_CCO.asstring <> '' then
      mi.BCC := Datos.ZEMailPARA_CC.asstring;

     .....

   finally
     mi.Free;
     ns.Logoff;
   end



De todas formas, creo a partir de la versión del 2010 había un cambio. Trata de utilizar solo la opcion de Create...

shoulder 21-11-2014 14:46:13

Outlook Microsoft 2010
 
Primero Gracias por tus respuestas, intente tu forma, otra que encontre parecida, me da siempre el mismo error. Si el outlook no esta abierto y minimizado me sale "El servidor no esta disponible" u "Operacion Anulada". Y no me deja hacer nada. Si tengo el outlook abierto funciona todo perfecto. Te muestro las forma que use.


Código Delphi [-]

  Outlook := TOutlookApplication.Create( nil );
  try
      Outlook.Connect;
      try
        olNameSpace := Outlook.GetNamespace('MAPI');
        olNameSpace.Logon('', '', False, False);
        try
           MailIt := TMailItem.Create( nil );
           MailIt.ConnectTo( Outlook.CreateItem( olMailItem ) as MailItem );
            try
             MailIt.Recipients.Add.........;
             ......................................
             MailIt.Display;
            finally
              MailIt.Free;
            end;
         finally
              MailIt.Free;
         end;
      finally
     //   Outlook.Disconnect;
      end;
   finally
      Outlook.free;
    end;

o la forma del ejemplo del post 1-
Código Delphi [-]
 try
       Outlook := GetActiveOleObject('Outlook.Application');
     except
      Outlook := CreateOleObject('Outlook.Application');
     end;

      MailItem := Outlook.CreateItem(olMailItem);
      MailItem.Recipients.Add(...........
...............................
      MailItem.Display;
      // MailItem.send;
      Outlook := Unassigned;
     
    end

shoulder 29-12-2014 20:46:59

Operacion Anulada
 
Hola sigo con este problema sin poder resolverlo, Si el outlook esta abierto y minimizado funziona todo perfecto, si el outlook esta cerrado viene el cartel de delphi "Operacion Anulada". Me esta faltando un uses?, ya proble de todo y sigo con el error.


Gracias.

pacopenin 02-01-2015 18:00:13

Parece algo relacionado con permisos (prueba a ejecutar tu programa como administrador) o algo de configuración de outlook. ¿Probaste en algún ordenador más?. O mira la configuración del antivirus. Si puedes depurarlo, localiza la línea en la que da el error.

No se me ocurre otra cosa.

shoulder 06-01-2015 18:35:04

Outlook Microsoft 2010
 
Hola lo probe mas o menos en 15 Pcs, la linea que me da el error es

Cita:


try
Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;


TiammatMX 06-01-2015 18:49:35

Cita:

Empezado por shoulder (Mensaje 487345)
Hola lo probe mas o menos en 15 Pcs, la linea que me da el error es ...

Prueba a quitarle las comillas..., sospecho que se espera un OBJETO, no una CADENA.

pacopenin 07-01-2015 11:58:15

Echa un ojo a ésto. Creo que ya lo había sugerido.

http://www.clubdelphi.com/foros/showthread.php?t=83932

Sigues si indicar en que línea da el error, solo comentas el bloque que incluye dos instrucciones.
Te sugiero que utilices las otras formas que te hemos comentado y trates de identificar en donde se produce el error de forma más exacta. Si no arrinconamos el problema dificilmente podremos darle solución.

Revisa en la configuración de Outlook: Archivo-Opciones-Centro de confianza-Configurar centro de confianza-Acceso mediante programación y verifica que no esté bloqueado.

Si buscas GetActiveOleObject Outlook en google verás que no eres el primero al que le pasa. Esa instrucción me parece que falla a partir de Outlook 2010. El código que te pasé está funcionando en varias decenas de instalaciones y nunca me ha dado problema (hasta el momento) en XP, W7 y W8, por eso sugerí que revises configuración de permisos o antivirus.
Si al final no consigues solucionarlo te sugiero que utilices algún componente de envío de correos vía MAPI como jvMail (del las JVCL) ó SMail (de smcomponents), ambos gratuítos y que funcionan bien. Yo utilizo el jvMail cuando no tienen Outlook y es necesario usar Mail, Outlook Express ó Thunderbird por ejemplo, aunque funciona sin problemas en Outlook también.

Saludos,

shoulder 08-01-2015 19:59:10

Outlook Microsoft 2010
 
Primero Gracias por las respuestas, identifique el error!!!! al menos es algo....

es en esta linea donde me da operacion anulada sino tengo abierto el outlook.

Cita:

MailItem.Recipients.Add(edit3.Text+'@hormail.com');

Gracias.

pacopenin 08-01-2015 20:13:00

Vamos avanzando.;)

Tanto en el ejemplo que yo te puse como en otro que pusiste tú que tampoco te funcionaba, tras crear un elemento de tipo TMailItem se hace una operación ConnectTo. Creo recordar cuando lo preparé (que por cierto también me dió mucha guerra) que era importante.

Si me permites otro consejo: crea un proyecto vacío, con un formulario y tres botones y que cada uno utilice uno de los sistemas propuestos para enviar el correo. Elimina todo lo superfluo : Añade un asunto, una dirección de envío y prueba sin más. Si funciona vas añadiendo elementos. No te llevará demasiado y seguro que será más facil localizar el problema.

Saludos.

shoulder 08-01-2015 21:20:05

Outlook Microsoft 2010
 
Probe de todas las formas posibles con connect sin connect cambiando el nombre del variant mailitem. Pero si tengo cerrado el outlook en la linea

Cita:

MailItem.Recipients.Add(edit3.Text.....

Operacion Anulada.

Como que el recipiente de casilla esta cerrado?.


La franja horaria es GMT +2. Ahora son las 07:44:41.

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