Newsgroup: it.comp.lang.delphi
Titolo: Ancora "MailTo"

Vorrei poter inviare ad OutLook Express un file per allegato, ma l'unica
cosa che riesco a fare e avviarlo con "ShellExecute" passandogli la stringa
mailto:
pi...@pippo.com
?subject=oggetto%20del%20messaggio&body=ciao, ma non
so proprio come mandargli un allegato.
Se qualcuno conosce il modo mi farebbe un grande favore.
Grazie a tutti in anticipo

! Mi ricordo di te. E come
dimenticarti, del resto? Non sei per caso quello che sab 01 dic 2001
09:00:23p, su it.comp.lang.delphi, ha scritto: 

Devi usare MAPI. Come, non chiederlo a me, anzi, buona fortuna perchè è 
incasinatissimo
-- 
Nato nel vizio, morto nel supplizio
Nato nel peccato, ad entrare sia invitato

Tič!!! :)))
Nella parte finale del codice ci sono delle mie cosette che devi modificare
per farlo funzionare a tuo piacimento...
procedure InviaEMail(Destinatario, txtCC, txtBCC, Soggetto, AttachFile,
Messaggio : string);
var
  err: ULONG;
  AnyStr: PChar;
  nAttachments, nRecipients: Cardinal;
begin
  if (Destinatario <> '') and (Soggetto <> '') and (Length(Messaggio) > 0)
then
    begin
      nAttachments := 1;
      nRecipients := 0;
      if Destinatario <> '' then Inc(nRecipients);
      if txtCC <> '' then Inc(nRecipients);
      if txtBCC <> '' then Inc(nRecipients);
      { assign 0 to all structure options }
      FillChar(lppMapiRecipDesc, SizeOf(TMapiRecipDesc), 0);
      lparrayRecips  :=
TlpRecipArray(StrAlloc(nRecipients*SizeOf(TMapiRecipDesc)));
      FillChar(lparrayRecips^, StrBufSize(PChar(lparrayRecips)), 0);
      lparrayAttachments :=
TlpAttachArray(StrAlloc(nAttachments*SizeOf(TMapiFileDesc)));
      FillChar(lparrayAttachments^, StrBufSize(PChar(lparrayAttachments)),
0);
      { check to see if there is file to attach }
      if AttachFile <> '' then
        begin
          { info about Attachment}
          lparrayAttachments^[0].ulReserved := 0;
          lparrayAttachments^[0].flFlags := 0;
          lparrayAttachments^[0].nPosition := ULONG($FFFFFFFF);
          AnyStr := StrAlloc(length(AttachFile)+1);
          StrPCopy(AnyStr, AttachFile);
          lparrayAttachments^[0].lpszPathName := AnyStr;
          AnyStr := nil;
          StrDispose(AnyStr);
          AnyStr := StrAlloc(length(ExtractFileName(AttachFile))+1);
          StrPCopy(AnyStr,ExtractFileName(AttachFile));
          lparrayAttachments^[0].lpszFileName := AnyStr;
          AnyStr := nil;
          StrDispose(AnyStr);
          lparrayAttachments^[0].lpFileType := nil;
        end;
      { info about recipient }
      lparrayRecips^[0].ulReserved := 0;
      lparrayRecips^[0].ulRecipClass := MAPI_TO;
      AnyStr := StrAlloc(length(Destinatario)+1);
      StrPCopy(AnyStr, Destinatario);
      lparrayRecips^[0].lpszName := AnyStr;
      lparrayRecips^[0].lpszAddress := nil;
      lparrayRecips^[0].ulEIDSize := 0;
      lparrayRecips^[0].lpEntryID := nil;
      AnyStr := nil;
      StrDispose(AnyStr);
      { info about CC }
      if txtCC <> '' then
        begin
          AnyStr := StrAlloc(length(txtCC)+1);
          StrPCopy(AnyStr,txtCC);
          lparrayRecips^[1].ulReserved := 0;
          lparrayRecips^[1].ulRecipClass := MAPI_CC;
          lparrayRecips^[1].lpszName := AnyStr;
          lparrayRecips^[1].lpszAddress := nil;
          lparrayRecips^[1].ulEIDSize := 0;
          lparrayRecips^[1].lpEntryID := nil;
          AnyStr := nil;
          StrDispose(AnyStr);
        end;
      { info about BCC }
      if txtBCC <> '' then
        begin
          AnyStr := StrAlloc(length(txtBCC)+1);
          StrPCopy(AnyStr,txtBCC);
          lparrayRecips^[2].ulReserved := 0;
          lparrayRecips^[2].ulRecipClass := MAPI_BCC;
          lparrayRecips^[2].lpszName := AnyStr;
          lparrayRecips^[2].lpszAddress := nil;
          lparrayRecips^[2].ulEIDSize := 0;
          lparrayRecips^[2].lpEntryID := nil;
          AnyStr := nil;
          StrDispose(AnyStr);
        end;
      { main structure that is used to send the message }
      lppMapiMessage.ulReserved := ULONG(0);
      lppMapiMessage.lpszSubject := PChar(Soggetto);
      lppMapiMessage.lpszNoteText := PChar(Messaggio);
      lppMapiMessage.lpszMessageType := nil;
      lppMapiMessage.lpszDateReceived := nil;
      lppMapiMessage.lpszConversationID := nil;
      lppMapiMessage.flFlags := ULONG(0);
      lppMapiMessage.lpOriginator := nil;
      lppMapiMessage.nRecipCount := nRecipients;
      lppMapiMessage.lpRecips := @lparrayRecips^;
      if AttachFile <> '' then
        begin
          //esegue solo se č stato allegato un file
          lppMapiMessage.nFileCount := nAttachments;
          lppMapiMessage.lpFiles := @lparrayAttachments^;
        end;
      { mette la mail in "Posta in uscita" di Outlook. Make sure you check
the option
        to send mail immediately in your Exchange or Outlook }
      err := MAPISendMail(0, 0, lppMapiMessage, 0, 0);
      if err <> SUCCESS_SUCCESS then
          MessageDlg('Si č verificato un errore durante la procedura di
invio dei dati.'
                     +Chr(13)+Chr(13)+'Ripetere l''invio dei dati.',
mtError, [mbOk], 0)
        else
          MessageDlg('Operazione effettuata con successo.', mtInformation,
[mbOk], 0);
    end;
end;
--
Max Etere
maxe...@infinito.it
www.sendai.it/encom
ICQ#: 129227562