Ver Mensaje Individual
  #1  
Antiguo 06-03-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Reputación: 2
giantonti1801 Va por buen camino
Enviar Correo con Archivo Ajunto Stream (pdf)

Buen dia amigo, estoy tratando de enviar un correo desde la aplicacion pero se me presentan 2 problemas:
1. Necesito limpiar los Archivo adjunto antes de enviarlo ya que cuando llega al correo me aparece que tiene varios archivos adjunto (asumo que con todas la pruebas que hice aun conserva en la memori los que envie anteriormente)
2. Nececito Generar un Stream del archivo PDF para no que guardar el archivo en el PC o Movil y obviamente enviar directamente al Destinatario como archivo adjunto.

Les envio el codigo que tengo actualmente aunque aun tiene problema pero quiero ver si alguien me ayude a que funcione:

Código Delphi [-]
procedure TForm1.TMSFMXToolBarButton42Click(Sender: TObject);
var
filename: TStream;
//filename: String;
s1: tStream;
  begin
     s1 := TMemoryStream.Create;
     frxReport1.PrepareReport();
     frxReport1.Export(frxPDFExport1);
     frxReport1.SaveToStream(s1);
    begin
    UniQueryEmail.Close;
    UniQueryEmail.SQL.Clear;
    UniQueryEmail.SQL.Add('Select * from Email');
    UniQueryEmail.SQL.Add('where instrut = :instrut');
    UniQueryEmail.ParamByName('instrut').AsString := LabelRutInst.Text;
    UniQueryEmail.Open;
    if not uniqueryemail.Eof  then
       begin
         filename := s1;
         try
         IdSMTP.Host := UniQueryEmailSMTP_HOST.AsString;
         IdSMTP.Password  := UniQueryEmailSMTP_PASSWORD.AsString;
         IdSMTP.Port := StrToInt(UniQueryEmailSMTP_PORT.AsString);
         IdSMTP.Username := UniQueryEmailSMTP_USERNAME.AsString;
         data.Subject := 'PRUEBA DE ENVIO';//edit3.Text; ???????????????
         data.Recipients.EMailAddresses := LabelPacEmail.Text;
         data.Body := memo1.Lines;
         data.AttachmentTempDirectory := filename;
         TIdAttachmentfile.create(data.MessageParts,filename); //es aquí donde tengo el problema asumo que sea por incompatibilidad de archivo o seguramente no lo estoy haciendo de la forma correcta
           try
           IdSMTP.Connect;
           IdSMTP.Send(Data);
           finally
            IdSMTP.Disconnect(true);
            ShowMessage('Correo enviado con exito');
           end;

         Except

          on E: exception do
             ShowMessage(E.Message)

         end;


       end
       else
       begin
         ShowMessage('No se puede enviar el EMAIL');
       end;
    
    end;
  end;
Responder Con Cita