Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Dejar e-mail elementos enviados (https://www.clubdelphi.com/foros/showthread.php?t=62010)

Mauro Daniel 01-12-2008 11:30:54

Dejar e-mail elementos enviados
 
Hola a todos...
Siguiendo lo que encontre en el foro cree un evento que me permita enviar e-mails desde mi sistema. El siguiente es un fragmento del mismo:
procedure EnviarMensaje(sUsuario, sClave, sHost, sAdjunto, sAsunto, sOrigen, sDestino, sMensaje: String);
var
SMTP: TIdSMTP;
Mensaje: TIdMessage;
Adjunto: TIdAttachment;
begin
// Creamos el componente de conexión con el servidor
SMTP := TIdSMTP.Create( nil );
SMTP.Host := sHost;
SMTP.Port := 25;
SMTP.AuthenticationType := atNone;
// Creamos el contenido del mensaje
Mensaje := TIdMessage.Create(nil);
Mensaje.Clear;
Mensaje.From.Name := sOrigen;
Mensaje.From.Address := sOrigen;
Mensaje.Subject := sAsunto;
Mensaje.Body.Text := sMensaje;
Mensaje.SaveToFile
Mensaje.Recipients.EMailAddresses := sDestino;
Mensaje.MessageParts.
.
.
.
Mi duda es la siguiente: ¿Como puedo hacer para que los e-mail enviados me queden en mi correo dentro de la bandeja de elementos enviados?:confused:

Desde ya muchas gracias.
Saludos a todos

duilioisola 01-12-2008 13:28:41

Creo que el método que estás utilizando es incorrecto.
Lo que debes hacer es enviarlo "a travez de" una aplicación como Outlook, Outlook Express o Thunderbird.
Busca en los foros, porque creo que hay algo...

duilioisola 01-12-2008 13:39:09

Mira este link

Mauro Daniel 02-12-2008 12:14:22

e-mail en bandeja de elementos enviados
 
Hola...Gracias por responder. Pero me gustaría saber si hay forma de que me queden en la bandeja de elementos enviados con el metodo que estoy utilizando. Yo investigué los dos métodos y el de smtp me permite gran variedad de opciones con respecto a la otra opcion (mailto), el único problema que tengo es que no me aparecen dentro de 'elementos enviados'.
Les agradezco nuevamente por su interes.
Salu2 a todos...

duilioisola 02-12-2008 12:35:52

De la forma que lo haces no es posible, porque no pasa a travez de la aplicación que los envía (Outlook), sinó que directamente va al servidor de correo saliente (SMTP).

La Aplicación que envía (Outlook) es la que se encarga de guardar una copia en una bandeja de "elementos enviados".

He encontrado este código, que quizás te sirva en este lugar:

Código Delphi [-]
const olMailItem = 0;
var Outlook: OLEVariant;
     MailItem: Variant;
begin
  try
   Outlook:=GetActiveOleObject('Outlook.Application') ;
  except
   Outlook:=CreateOleObject('Outlook.Application') ;
  end;
  MailItem := Outlook.CreateItem(olMailItem) ;
  with MailItem do begin
   Recipients.Add('delphi.guide@about.com') ;
   Subject := 'Subject: Outlook Mail From Delphi';
   Body := 'Welcome to my homepage:http://delphi.about.com';
   Attachments.Add('C:\Windows\Win.ini') ;
   Send;
  end; {with}
   Outlook := Unassigned;
end;
Al enviarlo a travez de una aplicación, esta se encargará de guardarlo en la carpeta correspondiente.

Nota: He visto en varias webs que no se puede hacer esto con Outlook Express. Solo con Outlook.

duilioisola 02-12-2008 13:08:21

En este link he encontrado la forma de enviar correos a travez de Outlook Express. Es necesario que esté MAPI esté instalado.

Código Delphi [-]
  

program MAPIMail;

uses
  MAPI;

function SendMailMAPI(const Subject, Body, FileName, SenderName, SenderEMail,
                  RecepientName, RecepientEMail: String) : Integer;
var
  message: TMapiMessage;
  lpSender,
  lpRecepient: TMapiRecipDesc;
  FileAttach: TMapiFileDesc;
  SM: TFNMapiSendMail;
  MAPIModule: HModule;
begin
  FillChar(message, SizeOf(message), 0);
  with message do
  begin
    if (Subject<>'') then
    begin
      lpszSubject := PChar(Subject)
    end;
    if (Body<>'') then
    begin
      lpszNoteText := PChar(Body)
    end;
    if (SenderEMail<>'') then
    begin
      lpSender.ulRecipClass := MAPI_ORIG;
      if (SenderName='') then
      begin
        lpSender.lpszName := PChar(SenderEMail)
      end
      else
      begin
        lpSender.lpszName := PChar(SenderName)
      end;
      lpSender.lpszAddress := PChar('SMTP:'+SenderEMail);
      lpSender.ulReserved := 0;
      lpSender.ulEIDSize := 0;
      lpSender.lpEntryID := nil;
      lpOriginator := @lpSender;
    end;
    if (RecepientEMail<>'') then
    begin
      lpRecepient.ulRecipClass := MAPI_TO;
      if (RecepientName='') then
      begin
        lpRecepient.lpszName := PChar(RecepientEMail)
      end
      else
      begin
        lpRecepient.lpszName := PChar(RecepientName)
      end;
      lpRecepient.lpszAddress := PChar('SMTP:'+RecepientEMail);
      lpRecepient.ulReserved := 0;
      lpRecepient.ulEIDSize := 0;
      lpRecepient.lpEntryID := nil;
      nRecipCount := 1;
      lpRecips := @lpRecepient;
    end
    else
    begin
      lpRecips := nil
    end;
    if (FileName='') then
    begin
      nFileCount := 0;
      lpFiles := nil;
    end
    else
    begin
      FillChar(FileAttach, SizeOf(FileAttach), 0);
      FileAttach.nPosition := Cardinal($FFFFFFFF);
      FileAttach.lpszPathName := PChar(FileName);
      nFileCount := 1;
      lpFiles := @FileAttach;
    end;
  end;
  MAPIModule := LoadLibrary(PChar(MAPIDLL));
  if MAPIModule=0 then
  begin
    Result := -1
  end
  else
  begin
    try
      @SM := GetProcAddress(MAPIModule, 'MAPISendMail');
      if @SM<>nil then
      begin
        Result := SM(0, Application.Handle, message, MAPI_DIALOG or
                     MAPI_LOGON_UI, 0);
      end
      else
      begin
        Result := 1
      end;

    finally
      FreeLibrary(MAPIModule);
    end;
  end
  if Result<>0 then
  begin
    MessageDlg('Error sending mail ('+IntToStr(Result)+').', mtError, [mbOk],
               0)
  end;
end;

begin

end.


La franja horaria es GMT +2. Ahora son las 00:53:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi