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

creazione di mail da inviare

  1. #1
    Monti non è in linea Scolaretto
    Post
    99
    Like Inviati  
    0
    Like Ricevuti  
    0
    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

    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
    Post
    1,350
    Like Inviati  
    0
    Like Ricevuti  
    14
    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!
    ℹ️ Leggi di più su _alka_ ...

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

  4. #4
    Monti non è in linea Scolaretto
    Post
    99
    Like Inviati  
    0
    Like Ricevuti  
    0
    ho provato a inserire tutti e tre i caratteri esadecimali
    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 messaggio

Potrebbero interessarti anche ...

  1. Inviare mail via VBA
    Da Jocman nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 13-06-2016, 11:15
  2. Inviare mail da codice
    Da Unistar nel forum Visual Basic .Net
    Risposte: 8
    Ultimo Post: 27-12-2013, 22:10
  3. Inviare URL in PHP con mail()
    Da schizzechea nel forum PHP
    Risposte: 4
    Ultimo Post: 14-10-2008, 10:00
  4. inviare mail
    Da massimo74rn nel forum ASP 3, ASP .Net
    Risposte: 1
    Ultimo Post: 24-07-2008, 20:38
  5. inviare e-mail
    Da Diabolik nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 03-11-2005, 21:05