Newsgroup: it.comp.lang.delphi
Titolo: IdSMTP +MultiPart

Salve a tutto il ng,
ho un problema con l'invio di una mail con allegato e logo, o meglio, 
l'invio avviene correttamente ma la mail che ricevo visualizza 
contemporaneamente tutte le parti del messaggio: text/plain, text/html, 
Logo. Quindi ottengo una cosa del tipo:
    sssssss // parte text/plain
    #jpeg del logo#
    hhhhh // parte text/html comprendende, per la seconda volta, la jpg del 
logo
Io vorrei che il text/plain venga visualizzato solo dai client che non 
supportano l'html e che la jpg del logo venga visualizzata una sola volta 
(come inline della parte html).
ecco il codice:
procedure TfrmPrincipale.SendMail(Recipient, Oggetto, aDoc, Address, 
Messaggio: string);
const sLogo = 'logo_LA.jpg';
var
  AdressItem: TIdEMailAddressItem;
  AMessage  : TIdMessage;
  ASMTP     : TIdSMTP;
  IdBody    : TIdText;
  IdHTML    : TIdText;
  idStars   : TIdAttachmentFile;
  Allegato  : TIdAttachmentFile;
begin
  Screen.Cursor := crHourGlass;
  AMessage := TIdMessage.Create(nil);
  AMessage.NoDecode := False;
  AMessage.NoEncode := False;
  AMessage.ContentType := 'multipart/mixed';
  AMessage.Encoding := meMIME;
  // Impostiamo il recipiente dei destinatari.
  AdressItem := AMessage.Recipients.Add;
  AdressItem.Name := Recipient;
  AdressItem.Address := Address;
  // Impostiamo il Soggetto.
  AMessage.Subject := Oggetto;
  // Impostiamo il Sender.
 
AMessage.Sender.Name
 := 'Nome Mittente';
  AMessage.Sender.Address := self.parametri.indirizzo;
  // Impostiamo il From.
 
AMessage.From.Name
 := 
AMessage.Sender.Name
;
  AMessage.From.Address := AMessage.Sender.Address;
  // Creiamo il body plain.
  IdBody := TIdText.Create(AMessage.MessageParts);
  IdBody.ContentType := 'text/plain';
  IdBody.Body.Add(AnsiReplaceStr(messaggio, '\r\n', #13));
  IdBody.Body.Add('');
  //Aggiungiamo il logo
  idStars := TIdAttachmentFile.Create(AMessage.MessageParts, sLogo);
  idStars.FileName := '<Logo>';
  idStars.ContentType := 'image/jpeg';
  idStars.ContentDisposition := 'inline';
  idStars.ExtraHeaders.Values['content-id'] := sLogo;
  idStars.DisplayName := '<Logo>';
  idStars.ParentPart := -1;
  // Creiamo il body HTML.
  IdHTML := TIdText.Create(AMessage.MessageParts);
  IdHTML.ContentType := 'text/html; charset=US-ASCII';
  IdHTML.ContentTransfer := '7bit';
  IdHTML.Body.Add('<html>');
  IdHTML.Body.Add('   <head>');
  IdHTML.Body.Add('     <title>Comunicazione</title>');
  IdHTML.Body.Add('   </head>');
  IdHTML.Body.Add('   <style type="text/css">');
  IdHTML.Body.Add('   body {');
  IdHTML.Body.Add(' 
font-family:arial,verdana,sans-serif;font-size:12px;');
  IdHTML.Body.Add('   }');
  IdHTML.Body.Add('   </style>');
  IdHTML.Body.Add('   <body title="Comunicazione">');
    IdHTML.Body.Add('   <table cellpadding="1" cellspacing="1" 
style="border:0;">');
      IdHTML.Body.Add('   <tr>');
        IdHTML.Body.Add('   <td sryle="vertical-align:top;"><img 
src="cid:'+sLogo+'" alt="Logo" title="Logo" align="top" /></td>');
        IdHTML.Body.Add('   <td>');
        IdHTML.Body.Add(      AnsiReplaceStr(messaggio, '\r\n', '<br />'));
        IdHTML.Body.Add('   </td>');
      IdHTML.Body.Add('   </tr>');
    IdHTML.Body.Add('   </table>');
  IdHTML.Body.Add('   </body>');
  IdHTML.Body.Add('</html>');
  if Trim(aDoc) <> '' then begin
    // Aggiungiamo l'allegato.
    Allegato := TIdAttachmentFile.Create(AMessage.MessageParts, aDoc);
    Allegato.ExtraHeaders.Values['Content-ID'] := '<Documento>';
    Allegato.ContentType := 'application/msword';
  end;
  // Inviamo la mail...
  ASMTP := TIdSMTP.Create(nil);
  ASMTP.Host := self.parametri.server_smtp;
  ASMTP.Port := self.parametri.porta_smtp;
  ASMTP.AuthType := atNone;
  ASMTP.Connect;
  try
    ASMTP.Send(AMessage);
  except
    on E: Exception do ShowMessageFmt('ERRORE! %s ha generato il seguente 
messaggio: ' + #10#13 + ' %s', [E.ClassName, E.Message]);
  end;
  ASMTP.Disconnect;
  AMessage.Free;
  ASMTP.Free;
  Screen.Cursor := crDefault;
end;
Grazie.
Luca

   AMessage.ContentType := 'multipart/mixed';
E' una vita che non uso Indy (che versione stai usando? Non e' una
informazione da poco...) ma mi sembra di ricordare che quando si mixano
plain text ed Html bisogna mettere:
'multipart/alternative' 
Il resto del sorgente, lo ammetto, non l'ho letto, quindi puo' darsi che
il problema sia altrove. Sicuramente c'e' qualcuno che ne sa più di me a
riguardo.
Ciao
ACSH
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 il problema sia altrove. Sicuramente c'e' qualcuno che ne sa piů di me a


 il problema sia altrove. Sicuramente c'e' qualcuno che ne sa piů di me a
