Newsgroup: it.comp.lang.delphi
Titolo: [D7] Indirizzo Mail Del Client Con SMTP

Ciao a tutti,
 
richiestina sempre dall'unico cliente importante ( mio cognato ), dal programma invio mail tramite il protocollo SMTP con Outlook 2010 e fin qui tutto bene, ieri sera mio cognato mi fa : sarebbe possibile memorizzare le mail che vengono inviate ? ( solo il destinatario e il mittente ) Certamente rispondo io, non c'e' nessun problema, a dire il vero il problemino ci sarebbe, senza impostare su tutti i client ( sono 5 ) l'indirizzo tramite un file INI sarebbe possibile tramite delphi leggere l'indirizzo in automatico con cui il client esce dalla posta ? I client hanno Outlook 2010.
 
Es.
 
Client 1 - mail con cui esce 
rossi...@xxxx.it
 
Client 2 - mail con cui esce 
verdi....@xxxx.it
 
 
Spero di essere stato abbastanza chiaro.
 
Un grazie a tutti.
 
Ciao da Enrico Giudici c/o Anthelios

Ciao, Enrico.
 
OLE AUTOMATION verso outlook.
La documentazione la trovi sull'ovvio (ma non per tutti) sito.
 
Immagino che ci siano 2 modi:
 
1) intercettare invio e ricezione di mail
In questo caso la tua applicazione si "mette in ascolto" e dovrebbe essere possibile avere nell'evento un oggetto che descrive il messaggio di posta, dal quale leggere gli indirizzi email e farne quello che serve
 
2) avere un "qualcosa" che ogni n unità di tempo configurabili itera sulle cartelle di outlook giuste, si becca gli indirizzi mail e fa quello che serve
 
La seconda, FORSE, è un pò pià semplice da implementare, ma è probabile che con passare del tempo impieghi più tempo (salvo che non esiste un modo per filtrare in base alla ultima data di esecuzione...), oltre alla non immediata disponibilità degli indirizzi:
 
http://delphi-kb.blogspot.it/2011/06/outlook-from-delphi_6280.html
 
 
La prima soluzione è "puntuale" e ha il vantaggio di rendere immediatamente disponibili le informazioni, ma FORSE è un pò più complessa da implementare, oltre ad avere la controindicazione che avrai solo gli indirizzi usati a partire dal momento nel quale il sistema entra in funzione.
 
Non avendo competenze, mi limito a suggerirti di valutare anche la eventuale possibilità di delegare questo lavoro al server della posta.
Magari qualcuno del NG che conosce la materia potrà dirti si può fare/è una cazzata/meglio lato client/etc
 
A.

Se la procedura prepara e spedisce la mail, non si può aggiungere una semplice tabella comune agli utenti che registri le operazioni effettuate? Ciao Brunello

Ciao Alberto,

nonostante le tue dritte, anche se sinceramente non ci ho capito granchè, per me è troppo complicato, in queste cose sono una foca, con tutto il rispetto per le foche.
Non volevo diventare matto, pensavo che c'era la possibilità di ricavare da qualche parte l'indirizzo mail del client in questione.
 
Ciao e grazie da Enrico Giudici c/o Anthelios

 Se la procedura prepara e spedisce la mail, non si può aggiungere una semplice tabella comune agli utenti che registri le operazioni effettuate? Ciao Brunello
 
infatti ho predisposto una tabella che dovrebbe memorizzare le mail inviate, il problemino è che attualmente tutti i client quando inviano una mail escono con :
 
mittente : 
in...@anthelios.it
 ( lo forzo io da programma )
destinatario : 
pinco....@dominio.it
 
 
come potrai vedere il mittente è sempre uguale e non so quale client preciso ha inviato la mail a pinco pallino dato che uso SMTP e non MAPI di outlook.
 
La soluzione più semplice è quella di vedere con quale mail il client esce con outlook ( basta inviare una mail a qualcuno ), prendere questo indirizzo e metterlo in un file sul ogni pc dei vari client, a questo punto il mio programma prima di inviare la mail legge il file e prende il mittente memorizzato.
 
Quello che vorrei, chiaramente se è possibile e che non sia complicatissimo, ricavare da qualche parte, registro di sistema, outlook o quant'altro la mail del client con cui esce all'esterno.
 
Spero di essere stato chiaro.
 
Intanto ti ringrazio


Enrico, scusami...Non ho capito.
Ste mail gli utenti le inviano FACENDO "NUOVA MAIL" SU OUTLOOK 2010?
Oppure è il TUO PROGRAMMA che le manda?
Nel secondo caso, se vai via SMTP presumo tu usi Indy...e outlook cosa fa?
 
A.

con una funzione come questa ricavi chi è loggato nel computer che manda la mail e inserisci il nome sulla tabella di log
 
function QualeUtente: String;
var
  UtenteLen : DWord;
  Utente: array[0..255] of Char;
begin
  UtenteLen := SizeOf(Utente);
  if not GetUserName(Utente, UtenteLen) then
     StrCopy(Utente, 'Sconosciuto');
  Result := Utente;
end;
 
oppure indentifichi il computer con  GetComputerName();


figurati nessun problema.
Gli utenti inviano le mail tramite il mio programma, utilizzo Indy, in questo modo bypasso outlook, infatti la mail inviata non va nella cartella posta inviata di outlook.


ho già utilizzato questa funzione trovata in rete, la utilizzo per sapere chi ha inserito/aggiornato un determinato record sulle tabelle del DB.
 
L'informazione che mi serviva era di duplice utilità, la prima era quella di memorizzare l'indirizzo mail dell'utente sulla tabella, e qui potrei anche, come dici giustamente tu memorizzare lo user e va bene. La seconda cosa più importante è che l'utente quando manda la mail esce con info@.... e i destinatari rispondono su questa che non va bene, dato che è una casella fittizia, l'utente vorrebbe ricevere l'eventuale risposta sul suo indirizzo mail.
 
Ciao e grazie da Enrico Giudici c/o Anthelios

Quindi tu hai il CONTROLLO, giusto?
 
Gli utenti scrivono il destinatario nel tuo programma, giusto?
Quindi gli indirizzi di destinazione la tua applicazione li CONOSCE e può salvarli dove gli pare, ok?
Idem dicasi per il mittente, o sbaglio?
 
Quindi, dove sta il problema? Non ho capito... :-(
 
A.
 
 
 

 Quindi, dove sta il problema? Non ho capito... :-(
 
Vedi il passo precedente.
 

 che mi arriva se mi spedisce una qualunque mail con outlook.
 
Perchè?
 
 
A parte tutto, secondo me ti conviene inserire l'indirizzo mail a mano da qualche parte nel tuo programma.
Magari, giusto per non avere le cose sparpagliate, se esiste una tabella di utenti aggiungerei li un campo. Se sta tabella non c'è, io la creerei.
 
A.

 
 
Infatti è una delle soluzioni, anche quella di cui ne parlavo io di memorizzare le mail degli utenti su ogni loro pc o in una tabella del db.
Quello che vorrei è essere slegato qualora venga censito un nuovo utente, lo so che non è un gran lavoro ma mi sarebbe piaciuto farlo ( se possibile ) in modo automatico.

 modo automatico.
 
Capisco. Ma la cura è peggiore del male, Enrico.
Ti costa molto di meno gestire il cambiamento a mano rispetto a tempi e costi di una implementazione che potrebbe non funzionare usando una versione più recente di outlook...
Consdera anche che non è assolutamente detto che sul client di posta sia gestito un solo indirizzo email. 
E nel caso il softare che fa, sceglie a caso..? :-P
 
A.

 
 
e vada per la tabella sul db, grazie 1000 per il support e la sopportazione.


 Client 1 - mail con cui esce 
rossi...@xxxx.it
 
 
Ciao Enrico,
faccio una considerazione del tutto personale, anzi forse due:
la prima - con l'smtp di indy non necessiti anche della password oltre 
che dell'indirizzo mail?
 
e se SI, da qui la seconda considerazione - "reperire" queste 
informazioni è lecito? :)
 
saluti
 
-- 
Emanuele Desideri

 informazioni è lecito? :)
 
io non reperisco nessuna informazione "delicata", utilizzo solo l'SMTP per mandare delle semplici mail tramite il server di mio cognato.
 
Probabilmente non ho capito quello che intendevi dirmi.
 
Ciao e grazie da Enrico Giudici c/o Anthelios

 Probabilmente non ho capito quello che intendevi dirmi.
 
Ancor più probabile è che non ho capito io :)
Credo, ma non ci metto la mano sul fuoco, che per inviare una mail 
(almeno con la maggior parte dei provider) tu necessiti di impostare 
uno username (solitamente l'indirizzo mail), una password e il server 
smtp.
Sbaglio?
 
-- 
Emanuele Desideri

 Sbaglio?
 
infatti, nelle proprietà metto il server smtp, lo user e la password, ma il server è quello di mio cognato, tali informazioni me li ha forniti il fratello di mio cognato che fa il sistemista.
 
Ciao da Enrico Giudici c/o Anthelios

 fratello di mio cognato che fa il sistemista.
 
ah ok, grazie del chiarimento.
saluti
 
-- 
Emanuele Desideri

 informazioni è lecito? :)
 
Dubito fortemente che un qualsiasi client di posta ti permetta (ovviamente, ma non per tutti, in modo "pulito"...!) di leggere la password per utilizzarla.
 
Se delghi al sistema operativo, esso lancerà il client di posta predefinito e l'autenticazione è gestita dal client stesso.
 
Se usi indy o altro, spetta a TE fornire al componente le credenziali.
 
A.

 informazioni è lecito? :)
 
Una cosa sono le credenziali necessarie a leggere le email (per es. usando IMAP o POP). Un'altra sono quelle necessarie a spedirle via SMTP. 
 
 

Ciao Enrico,
   tra le mie necessita' c'e' quella di mandare un email in automatico la 
commercialista ogni fine del mese, l'email con i dati di chi e dove ha 
mandato l'email devono essere registrate.
 
In questo caso, come ti ha suggerito Alberto, al programma si accede tramite 
un login che utilizza una tabella con tanti record quanti sono gli utenti, 
un campo (tra gli altri) e' l'email.
 
Nel tuo programma, con questa tabella, dopo aver inviato con successo 
l'email registri il nome dell'utente (quello del login), il nome del pc, 
l'indirizzo email e il corpo del messaggio.
 
Ciao
 
Daniele
 

 l'indirizzo email e il corpo del messaggio.
 
infatti è quello che poi ho fatto.
 
Ciao e grazie da Enrico Giudici c/o Anthelios