Gracias por las ideas, aqui esta el codigo que originalmente me sirvio, por si les sirve.
Código:
unit UWord;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComObj, OleServer, DB, DBTables;
type
TForm1 = class(TForm)
Button1: TButton;
Table1: TTable;
DataSource1: TDataSource;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses UDMWord, IdSMTP, IdMessage;
procedure TForm1.Button1Click(Sender: TObject);
var
Word: Variant;
Documento: Variant;
smtp: TIdSMTP;
mail: TIdMessage;
ArchivoE: String;
ArchivoS: String;
begin
Word := CreateOleObject('Word.Application');
ArchivoE:='c:\Archivo\Algo.dot'; // mi plantilla de word
ArchivoS:='c:\Envio.doc'; //el archivo que voy a enviar
DataModule1.Table1.Active:=True;
DataModule1.Table1.First;
while not DataModule1.Table1.Eof do
begin //abajo, el paso de los datos a mis variables de word
Documento:=Word.Documents.Open(ArchivoE);
Documento.Variables.Add('numexp',DataModule1.Table1.FieldValues['numexp']);
Documento.Variables.Add('asunto',DataModule1.Table1.FieldValues['asunto']);
Documento.Variables.Add('fojas',DataModule1.Table1.FieldValues['fojas']);
Documento.Fields.Update;
Documento.SaveAs(ArchivoS); //guardo el archivo
Documento.Close(False);
smtp:=TIdSMTP.Create(Self);
mail :=TIdMessage.Create(Self);
with smtp do
begin
Port := 25;
Host := 'nombre del host';
// AuthenticationType:=atLogin;
UserName := 'nombre de mi cuenta de correo';
PassWord := 'mi password de la cuenta de correo';
end;
with mail do
begin //Con bcc para que no se vean todas las direciones a las que envio, bueno aqui solo a una cuenta pero ya adapte a mi necesidad
BccList.Add;
BccList[0].Name:='Nombre de la persona a quien envias';
BccList[0].Address:='su direccion de correo';
From.Address:= 'mi direccion de correo, como la de arriba';
Subject:='Asunto del correo';
Body.Text:='Cuerpo del mensaje';
end;
TIdAttachment.Create(mail.MessageParts,ArchivoS); //adjunto el archivo
smtp.Connect(30000);
try
try
smtp.Send(mail);
except
on E: Exception do
ShowMessage(E.Message);
end;
finally
if smtp.Connected then
smtp.Disconnect;
end;
DataModule1.Table1.Next;
mail.Free;
smtp.Free;
DeleteFile(ArchivoS);
end;
end;