Newsgroup: it.comp.lang.delphi
Titolo: outlook e creazione mail con firma

Buongiorno a tutti.
Problema: creare una mail con firma predefinita e aggiungere del testo
e degli allegati (con Microsoft OutLook).
Quel che ho capito di MAPI per OutLook è questo:
1) creo il messaggio con l'allegato HTML che è la firma (file
comprensivo di logo);
2) salvo il messaggio e mi segno l'id;
3) riapro il messaggio con l'id;
4) apporto le modifiche;
5) ri-salvo il messaggio;
6) l'utente se lo trova nella cartella bozze da moficare e poi
inviare.
Dal punto 2 in poi non riesco più ad andare avanti, ho trovato degli
esempi in VB ma non sono poi riuscito a tradurli in Delphi.
Qualcuno ha affrontato il problema ?
Grazie !
Ciao !
-----------------------------------------------------------------------------
Codice utilizzato:
Procedure TF_Main.Go_To_OutLook;
Var
   mail:MailItem;
   nmspace:nameSpace;
   folder:MAPIFolder;
   ele_body:TStringList;
   srtmp:String;
   i:LongInt;
   messageid:String;
Begin
     // invia la mail tramite l'allegato
     Try
       OutLookApplication.ConnectKind:=ckRunningOrNew;
       outlookapplication.Connect;
       nmspace:=outlookapplication.getnamespace('MAPI');
       nmspace.logon('','',false,false);
       folder:=nmspace.getdefaultfolder(olfolderinbox);
     Except
       F_Main.Agente.Warning_Agente(name+'\Invia_Mail_OutLook\errore
aggancio');
     End;
     Try
       ele_body:=TStringList.Create;
       Try
         If (FileExists(var_globali.testo_mail)) Then
         Begin
           ele_body.LoadFromFile(var_globali.testo_mail);
         End;
         mail:=OutLookApplication.CreateItem(olmailitem) as mailitem;
         srtmp:='';
         mail.Recipients.add('
a...@a.com
');
         mail.attachments.add('C:\f\sviluppo\delphi\Aziende\xxx
\mailercx\firme\cdb2.htm',emptyparam,emptyparam,emptyparam);
         mail.Save;
         messageid:=mail.EntryID;
         mail.Close(olSave);
         mail.
         //mail.Attachments.add('C:\f\sviluppo\delphi\Aziende\xxx
\mailercx\firme\cdb2.jpg',emptyparam,emptyparam,emptyparam);
         mail.Subject:='prova'+srtmp;
         //mail.body:='ciao';
         For i:=0 to ele_body.count-1 do
         Begin
           Application.ProcessMessages;
           mail.Body:=mail.Body+ele_body.Strings[i]+#13;
         End;
         mail.Save;
       Finally
         ele_body.Free;
       End;
     Except
       F_Main.Agente.Warning_Agente(name+'\Invia_Mail_OutLook\errore
di invio');
     End;
     Try
       nmspace.logoff;
       outlookapplication.disconnect;
     Except
       F_Main.Agente.Warning_Agente(name+'\Invia_Mail_OutLook\errore
sgancio');
     End;
     F_Main.MsgBox('Il messaggio è stato salvato nella cartella
"Bozze"'+#10+'Modificare indirizzo di destinazione e testo
mail.','Informazione',mb_iconinformation);
End;


Ciao,
io ho creato una serie di documenti in word (salvati in html) che
fungono da base di partenza, modificabili dall'utente stesso o
creabili ex-novo, nel momento della creazione della e-mail, parte un
piccolo wizard che chiede all'utente di sceglie il documento di base
più opportuno alle sue esigenze, lo modificherà  se necessario, lo
salvalverà. Poi in una apposita form dovrà inserire l'indirizzo di
destinazione, gli eventuali allegati, alla fine invierà la e-mail.
La form di invio posta contiene un RichEdit nel quale carico il
documento di word creato in precedenza e per l'invio nel tuo codice
dovrai usare:
 > mail.Body:=mail.Body+ele_body.Strings[i]+#13;
mail.HTMLBody := <NomeDelRichEdit>.Lines.Text
Ciao
Micky

 - Mostra testo tra virgolette -
Ciao Micky.
A me il comando mail.htmlbody non viene riconosciuto.
Uso Delphi 5 e la unit per outlook 2000. Ho cannato qualcosa ?
Marco


Ciao,
è difficile capire quale sia il problema con queste poche
informazione, ti posto parte del codice che uso io testato con delphi
4 e delphi 7 con outlook 2000 e 2003
uses ComObj;
...
procedure <NomeTuaProcedura(bHtml:Boolean);>
const olMailItem = 0;
var
    MailItem: Variant;
    Outlook: OLEVariant;
begin
   try
      Outlook := GetActiveOleObject('Outlook.Application');
   except
      Outlook := CreateOleObject('Outlook.Application');
   end;
   MailItem := Outlook.CreateItem(olMailItem);
   try
      MailItem.Recipients.Add(edDestinatario.Text);
      MailItem.Subject := edOggetto.Text;
      if bHTML then
         MailItem.HTMLBody := RichEdit1.Lines.Text
      else
         MailItem.Body := RichEdit1.Lines.Text;
      if edAllegati.Text <> '' then
         MailItem.Attachments.Add(edAllegati.Text);
      MailItem.Send;
   finally
      Outlook := Unassigned;
   end;
end;
Cioa
Micky