Newsgroup: it.comp.lang.delphi
Titolo: SMTP con Allegato

Salve a tutti,
sto facendo un programmino che genera una file di word con ekRTF e poi 
dovrebbe inviarlo tramite e-mail ad un indirizzo prestabilito. Il tutto 
funziona con l'unico problema che la mail che arriva non contiene un 
allegato ma una stringa lunghissima del tipo:
This is a multi-part message in MIME format
--phn8NnXFIW1v8RAys99gzC=_JyZjNTBCIx
Content-Type: application/octet-stream;
       name="Delphi threading by example.doc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
       filename="prova.doc"
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAAgQAAAAAAAAAA
EAAAgwAAAAEAAAD+////AAAAAH8AAACAAAAA////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////s
pcEAcWAQBAAA8BK/AAAAAAAAEAAAAAAABgAAdj4AAA4AYmpianFQcVAAAAAAAAAAAAAAAAAAAAAA
ecc...
A qesto punto non capisco come risolvere questo inconveniente. La procedura 
che uso è la seguente:
procedure Invia_mail(allegato: string);
var testo_messaggio: string;
    data_inizio: TDate;
    Attach : TIdAttachmentFile;
begin
  if (self.parametri.server_smtp <> '') AND (self.parametri.porta_smtp > 0) 
then
  begin
    // Configurazione SMTP
    smtpConn.Host := self.parametri.server_smtp;
    smtpConn.Port := self.parametri.porta_smtp;
    // Configurazione Messaggio
    MailContent.ClearBody;
    MailContent.ClearHeader;
    MailContent.ContentType := 'multipart';
    MailContent.From.Address := '
in...@cliente.it
';
    MailContent.Recipients.EMailAddresses := 
mio_in...@prova.it
';
    MailContent.ContentType := 'text/html';
    MailContent.ContentTransferEncoding := 'base64';
    data_inizio := Date;
    data_inizio := IncDay(data_inizio, -1);
    testo_messaggio := '<html>' + chr(10);
      testo_messaggio := testo_messaggio + '<body>' + chr(10);
        testo_messaggio := testo_messaggio + '<p 
style="font-family:arial,verdana,sans-serif;font-size:13px;font-weight:600;">Ragione 
Sociale.</p>' + chr(10);
        testo_messaggio := testo_messaggio + '<div 
style="font-family:arial,verdana,sans-serif;font-size:12px;font-weight:600;">' 
+ chr(10);
          testo_messaggio := testo_messaggio + 'In allegato: elenco articoli 
acquistati in data ' + FormatDateTime('dd-mm-yyyy', data_inizio);
        testo_messaggio := testo_messaggio + '</div>' + chr(10);
      testo_messaggio := testo_messaggio + '</body>' + chr(10);
    testo_messaggio := testo_messaggio + '</html>' + chr(10);
    if FileExists(allegato) then begin
      Attach := TIdAttachmentFile.Create(MailContent.MessageParts, 
allegato);
    end;
    MailContent.Subject := 'Articoli acquistati';
    MailContent.Body.Text := testo_messaggio;
    //Invio Messaggio
    try
      try
        smtpConn.Connect;
      except on E:EIdSMTPReplyError do
        begin
          ShowMessage('Attenzione!' + chr(10) + chr(13) + 'ERRORE di 
connessione: ' + E.Message);
        end;
      end;
      try
        smtpConn.Send(MailContent);
      except on E:EIdSMTPReplyError do
        begin
          ShowMessage('Attenzione!' + chr(10) + chr(13) + 'ERRORE di invio: 
' + E.Message);
        end;
      end;
    finally
      if smtpConn.Connected then
        smtpConn.Disconnect;
    end;
  end;
end;
grazie.
Luca

io uso queste righe
var
    Msg : TIdMessage;
begin
 Msg := TIdMessage.Create(idSMTP);
..
..
  TIdAttachment.Create(Msg.MessageParts, Pdf);
..
..
  idSMTP.Host:=<>
  idSMTP.UserName:=<>
  idSMTP.Password:=<>
  idSMTP.Connect;
  try
   idSMTP.Send(Msg);
  finally
   idSMTP.Disconnect;
  end;
..
..
end

 ..
Mi son dimenticato di dire che io uso Indy 10. Infatti il metodo Crete vuole 
come parametro solo l'owner.
In ogni caso anche con queste modifiche l'allegato non arriva...