Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Enviar mail desde el Outlook Express (https://www.clubdelphi.com/foros/showthread.php?t=28519)

Gabriel2 21-12-2005 22:52:53

Enviar mail desde el Outlook Express
 
Hola compañeros del foro...

Cómo puedo mandar un mail desde el Outlook Express. Tiene que ser desde este programa y no desde otra aplicación o en base a un control. Necesito ejecutar la aplicación ,cargar la dirección de correo, un texto para el asunto y otro para el cuerpo del mensaje...
Utilizó Delphi 7...



Saludos y gracias...

dec 21-12-2005 23:29:51

Hola,

El tema se ha tratado en ocasiones en los Foros. Escribí algo hace tiempo que me permitía hacer lo que dices (si es lo que creo) al menos en ThunderBird, pero, creo que tampoco va mal para OutLook, es cuestión de que lo pruebes. He escrito lo siguiente en un momento, solamente por que se vea la idea: siéntete libre de editar el código cuanto necesites, se precise o estimes oportuno. Ya dirás si te va bien o qué. ;)

Código Delphi [-]
uses
  ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
const
  rsFormatoCuerpo = '&body="%S"';
  rsFormatoAsunto = 'mailto:%S?subject=%S';
var
  contador: integer;
  cuerpoTemporal: TStrings;
  cadenaEjecucion, destino, asunto, cuerpo: string;
begin
  destino := 'correo@electronico.es';
  asunto  := 'Este es el asunto del correo';
  cuerpo  := 'Este es el cuerpo del correo' +#13#10+ 'en dos líneas distintas';

  cuerpoTemporal := TStringList.Create;
  cuerpoTemporal.Text := cuerpo;

  cadenaEjecucion := Format(rsFormatoAsunto, [destino, asunto]);

  for contador := 0 to cuerpoTemporal.Count-1 do
  begin
    cuerpoTemporal[contador] := Format(rsFormatoCuerpo, [cuerpoTemporal[contador]]);
  end;

  cadenaEjecucion := cadenaEjecucion + cuerpoTemporal.Text;

  ShellExecute(Handle, 'open', PChar(cadenaEjecucion), nil, nil, SW_SHOWNORMAL);

  cuerpoTemporal.Free;
end;

Gabriel2 22-12-2005 00:52:10

Gracias..
 
Muchas gracias por la ayuda Club Delphi!!!

maro 25-05-2006 19:03:01

Hola a todos,

El código de como enviar un correo usando Outlook Espress, es muy bueno.

¿Sábrían, como podría, además, añadir a ese e-mail un fichero adjunto?

Muchas gracias por su tiempo.

Saludos.

ContraVeneno 25-05-2006 19:16:51

Código Delphi [-]
 rsFormatoAsunto = 'mailto:%S?subject=%S&file="%S"';
...
archivo:='C:\archivo.text'; 
.....
cadenaEjecucion := Format(rsFormatoAsunto, [destino, asunto, archivo]);

nfmiguel 26-10-2008 08:58:40

error al cargar
 
Me da un error me podeis ayudar:

No se puede iniciar Microsoft Office Outlook. Argumento no valido en la línea de comnados .Compruebe el modificador que esta usando.

JXJ 14-09-2010 17:30:15

no sirve para adjuntar un archivo estoy usando esto

Código Delphi [-]
cadenaEjecucion := 'mailto:correo@electronico.es?subject=Este es el asunto del correo&file='C:\archivo.text';

  ShellExecute(Handle, 'open', PChar(cadenaEjecucion), nil, nil, SW_SHOWNORMAL);

ni asi

cadenaEjecucion := 'mailto:correo@electronico.es?subject=Este es el asunto del correo&file="C:\archivo.text"';

ShellExecute(Handle, 'open', PChar(cadenaEjecucion), nil, nil, SW_SHOWNORMAL);

ni en delphi 7 ni en 2010

Enan0 14-09-2010 20:20:23

El tema es que eso te va a enviar el correo desde la Aplicacion de correos por defecto.

Podes utilizar la API de Outlook para enviar el correo?

TE dejo un ejemplo

Código Delphi [-]

unit uTestOutlook;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Outlook_TLB,
  StdCtrls;

type
  TForm1 = class(TForm)
    cmdLogin: TButton;
    cmdGetinfo: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    cmdCreate: TButton;
    procedure cmdLoginClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure cmdGetinfoClick(Sender: TObject);
    procedure cmdCreateClick(Sender: TObject);
  private
    { Private declarations }
    fsesion:_Application;
    fCalendar:MAPIFolder;
    fTaskFolder:MAPIFolder;
    fOutbox:MAPIFolder;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.cmdLoginClick(Sender: TObject);
begin
  if fsesion=nil then
  //Creamos la Conexion.
    fsesion:=CoOutlookApplication.Create;
  cmdGetinfo.Enabled:=true;
  Edit1.Enabled:=True;
  cmdCreate.Enabled:=True;
  //Obtenemos el nombre del Profile (se puede ver en panel de control / Correo).
  Memo1.Lines.add(fsesion.Name);
  
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  fsesion.Quit;
end;

procedure TForm1.cmdGetinfoClick(Sender: TObject);
var
  i:integer;
  Appt:_AppointmentItem;
begin
  //Obtenemos Las Citas..
  //Seleccionamos la Carpeta Calendario
  fCalendar:=fsesion.Session.GetDefaultFolder(olFolderCalendar);
  if fCalendar= nil then begin
    memo1.Lines.adD('nada que mostrar en Calendario');
    exit;
  end;

  Memo1.Lines.add('Nombre: '+fcalendar.Name);
 //Cantidad de Items
  for i:=1 to fCalendar.Items.Count do begin
    Memo1.lines.add('************* Item Nº '+inttostr(i) + ' ***********');
    //Obtenemos el Item y lo enmascaramos.
    appt:=fCalendar.Items.Item(i) as AppointmentItem;
    //Obtenemos la Descripcion. y otros.
    memo1.lines.add('Subject: ' +Appt.Subject);
    memo1.lines.add('    Date: ' +FormatDateTime('c',Appt.Start));
    Memo1.lines.add('*********************************************');
    appt:=nil;
  end;

end;

procedure TForm1.cmdCreateClick(Sender: TObject);
var
  Email:_MailItem;
begin
  if fsesion=nil then exit;
  //Creamos un nuevo correo
  Email:=fsesion.CreateItem(olMailItem) as MailItem;
  Email.Subject:=Edit1.Text;
  Email.Body:='Test of body';
  Email.To_:='tucorreo@dominio.com';
  if FileExists(ExtractFilePath(paramstr(0))+ '\Test.txt') then
  //el Modo olOLE es para enviarlo como archivo Adjunto (Documento, archivo ZIP etc)

    email.Attachments.Add(ExtractFilePath(paramstr(0))+ '\test.txt', olOLE, 0, 'Archivo') ;
  //envia el correo Si outlook esta abierto lo deja en la bandeja de salida.
  //caso contraro lo envia.
  {Dependiendo de la version y Service pack envia una advertencia de que una aplicacion
   Esta intentado hacer uso de outlook y luego te permite desidir que hacer}
  Email.Send;
  Email:=nil;
end;

end.

Enan0 14-09-2010 20:28:39

Te comento el Codigo de Delphi 5
En caso de que te haga falta el archivo Outlook_tlb.pas lo pode obtener de un ejemplo en el FTP
(te dejo el link)
http://terawiki.clubdelphi.com/Delph..._a_Outlook.zip

epm 27-12-2015 10:53:33

Correo con Outlook
 
Hola.
El enlace no funciona

Casimiro Notevi 27-12-2015 11:20:42

http://terawiki.clubdelphi.com/Delph..._a_Outlook.zip


La franja horaria es GMT +2. Ahora son las 10:18:44.

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