+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 4 su 4

Discussione: creazione di mail da inviare

  1. #1
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    90

    creazione di mail da inviare

    buongiorno a tutti,
    mi sto imbattendo in questo problema:
    devo creare, a run-time, il corpo di un messaggio mail da inviare con il programma
    predefinito e uso il seguente codice

    codice:
    procedure TGestPratSForm.SendConftoTOBtnClick(Sender: TObject);
    var
       em_subject, em_body, em_mail, Acapo, Spazio : string;
    begin
       Acapo := '%0C';
       Spazio := '%20';
    
       em_subject := 'Conferma Sigg '+ PmMasterData.ADO1aMascheraRAGIONESOCIALE.Value+' x '+
                                        IntToStr(PmMasterData.ADOPartecipanti.recordCount);
    
       em_body := 'di Seguito ns. CONFERMA per i servizi appresso elencati: '+acapo+
                  'descrizione  : '+PmmasterData.ADO1aMascheraDESCRIZIONEPRATICA.Value+Acapo+
                  'destinazione : '+PmmasterData.ADO1aMascheraDESTINAZIONE.Value+Acapo+
                  'Cliente      : '+PmMasterData.ADO1aMascheraRAGIONESOCIALE.Value+
                              ' - C.Fisc.:'+PmMasterData.ADOClienteCODICEFISCALE.Value+Acapo+
                  'Dal : '+FORMATDATETIME('dd/mm/yyyy', PmMasterData.ADO1aMascheraDATAPARTENZA.Value)+
                  '        Al : '+FORMATDATETIME('dd/mm/yyyy', PmMasterData.ADO1aMascheraDATARIENTRO.Value)+Acapo;
    
                  if PmMasterData.ADOPartecipanti.recordCount > 0 then begin
                     PmMasterData.ADOPartecipanti.first;
                     em_body := em_body + 'Passeggeri : '+Acapo;
                     while not PmMasterData.ADOPartecipanti.eof do begin
                        em_body := em_body + ' - '+PmMasterData.ADOPartecipantiCOGNOMENOME.Value +
                                            ' - dt.nascita : '+ FORMATDATETIME('dd/mm/yyyy', PmMasterData.ADOPartecipantiDATANASCITA.Value) +
                                            ' - rec. telef.: '+ PmMasterData.ADOPartecipantiTELEFONO.Value+Acapo;
                        PmMasterData.ADOPartecipanti.next;
                     end;
                  end;
    
                  em_body := em_body +Acapo+ 'In attesa Vs. conferma, cordiali saluti.'+Acapo;
    
       em_mail := 'mailto:'+(QRYFornProvv.fieldByName('E-Mail1') as TStringField).value+'?subject=' + em_subject + '&body=' + em_body ;
    
       ShellExecute(Handle,'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL) ;
    end;
    Se il programma in questione è OUTLOOK oppure il nuovo programma di win 10 (POSTA)
    il testo viene regolarmente formattato rispettando i caratteri di 'a capo' e 'spazio'
    impostati, me negli altri (ad esempio THUNDERBIRD) il testo viene riportato senza interruzioni..
    Esiste il modo di formattare in modo generico tale testo, affinchè venga 'accettato' anche
    dalle altre applicazioni ?

  2. #2
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,177
    Il carattere con codice esadecimale 0C è un salto pagina (ossia un Form Feed), non è un ritorno a capo, che viene invece espresso in Windows con la doppia sequenza di caratteri 0D+0A (che corrispondono a Carriage Return e Line Feed, abbreviato CRLF).

    Prova a sostituire il carattere che usi per il salto con quelli indicati, anche se non è detto che funzioni perché la scelta di come interpretare ciò che arriva dalla chiamata con il protocollo mailto: è appannaggio dei singoli programmi, ed è un modo rapido ma molto spartano e poco configurabile di preparare una nuova e-mail nel client di posta predefinito. Per esigenze più complesse, ad esempio, occorre ricorrere a MAPI.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  3. #3
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    90
    ok,
    ho modificato il valore in
    codice:
    Acapo := '%0D%0A';
    e con thunderbird funziona ma con il posta di win10 no

  4. #4
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    90
    ho provato a inserire tutti e tre i caratteri esadecimali
    codice:
    Acapo := '%0C%0D%0A';
    e l'unico inconveniente (accettabile..) e che con il posta di win10 aggiunge
    un rigo vuoto ogni volta che va a capo...

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi