Il linguaggio di programmazione Delphi
 

[D7] Indirizzo Mail Del Client Con SMTP

enrico.giudici@gmail.com 30 Nov 2016 09:14
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 ******* 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.mario ******* it
Client 2 - mail con cui esce verdi.franco ******* it

Spero di essere stato abbastanza chiaro.

Un grazie a tutti.

Ciao da Enrico Giudici c/o Anthelios
Alberto Salvati 30 Nov 2016 10:50
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
*****ata/meglio lato client/etc

A.
brunello 30 Nov 2016 11:01
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
enrico.giudici@gmail.com 30 Nov 2016 12:00
Ciao Alberto,

> 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
*****ata/meglio lato client/etc

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
enrico.giudici@gmail.com 30 Nov 2016 12:10
Ciao Brunello,

> 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 : info@anthelios.it ( lo forzo io da programma )
destinatario : pinco.pallino@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 ******* sul ogni pc dei vari client, a questo punto il mio
programma prima di inviare la mail legge il ******* 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

Ciao da Enrico Giudici c/o Anthelios
Alberto Salvati 30 Nov 2016 12:18
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.
brunello 30 Nov 2016 12:37
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();
enrico.giudici@gmail.com 30 Nov 2016 12:37
> 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?

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.
enrico.giudici@gmail.com 30 Nov 2016 12:46
> 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();

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
Alberto Salvati 30 Nov 2016 12:46
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.
enrico.giudici@gmail.com 30 Nov 2016 12:50
> Quindi tu hai il CONTROLLO, giusto?

Si.

>
> Gli utenti scrivono il destinatario nel tuo programma, giusto?

Si.

> Quindi gli indirizzi di destinazione la tua applicazione li CONOSCE e può
salvarli dove gli pare, ok?

Ok.

> Idem dicasi per il mittente, o sbaglio?

No, il mittente lo imposto io con una casella di posta generica ( info@.... )
Io dovrei conoscere l'indirizzo effettivo dell'utente, praticamente quello che
mi arriva se mi spedisce una qualunque mail con outlook.

>
> Quindi, dove sta il problema? Non ho capito... :-(

Vedi il passo precedente.
Alberto Salvati 30 Nov 2016 13:01
Premessa: Non è per rompere: è per capire... :-P

> No, il mittente lo imposto io con una casella di posta generica ( info@.... )

Perchè?

> Io dovrei conoscere l'indirizzo effettivo dell'utente, praticamente quello
> 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.
enrico.giudici@gmail.com 30 Nov 2016 14:36
> Premessa: Non è per rompere: è per capire... :-P

figurati, tu non rompi mai.

>
>> No, il mittente lo imposto io con una casella di posta generica ( info@....
)
>
> Perchè?
>

perchè inizialmente si era detto che si usciva con un indirizzo generico, ma
poi alcuni destinatari esterni rispondevano alle mail degli utenti su
quell'indirizzo. Purtroppo tale indirizzo essendo fittizio era un calderone
unico che gli utenti non hanno la possibilità di accedere, solo mio cognato con
dei filtri particolari.

>> Io dovrei conoscere l'indirizzo effettivo dell'utente, praticamente quello
>> che mi arriva se mi spedisce una qualunque mail con outlook.
>
> Perchè?

Perchè conoscendolo la mail che arriva ai destinatari esterni hanno la
possibilità di fare un "rispondi" e rimandare la risposta all'utente di mio
cognato e non al calderone della casella info.

>
>
> 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.
>

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.
Alberto Salvati 30 Nov 2016 15:01
> figurati, tu non rompi mai.

..come si vede che non mi conosci... :-D

> le mail degli utenti su ogni loro pc o in una tabella del db.

meglio il db: le hai tutte in un posto solo.
Ergo: se devi fare un controllo non ti tocca passare per tutti i client a
leggere un ******* ini "penale"...

> 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.

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.
enrico.giudici@gmail.com 30 Nov 2016 15:19
> ..come si vede che non mi conosci... :-D
>
Ti conosco, ti conosco ... ;-D

> meglio il db: le hai tutte in un posto solo.
> Ergo: se devi fare un controllo non ti tocca passare per tutti i client a
leggere un ******* ini "penale"...
>

hai perfettamente ragione.

>
> 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
>

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

Ciao da Enrico Giudici c/o Anthelios
Emanuele Desideri 1 Dic 2016 09:56
enrico.giudici@gmail.com ha pensato forte :

> Client 1 - mail con cui esce rossi.mario ******* 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
enrico.giudici@gmail.com 1 Dic 2016 10:30
Ciao Emanuele,

> 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?
>

no, io non imposto nessuna password, setto solo l'indirizzo di partenza ( from
), l'indirizzo del destinatario ( to ) e l'oggetto, corpo della mail e poi
invio.

> e se SI, da qui la seconda considerazione - "reperire" queste
> 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
Emanuele Desideri 2 Dic 2016 08:29
Dopo dura riflessione, enrico.giudici@gmail.com ha scritto :

> 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
enrico.giudici@gmail.com 2 Dic 2016 08:58
> 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?

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
Emanuele Desideri 2 Dic 2016 09:14
Il 02/12/2016, enrico.giudici@gmail.com ha detto :

> 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.

ah ok, grazie del chiarimento.
saluti

--
Emanuele Desideri
Alberto Salvati 2 Dic 2016 09:20
> la prima - con l'smtp di indy non necessiti anche della password oltre
> che dell'indirizzo mail?

Da come scrivi sembra che con indy ti serva la password mentre se usi, che ne
so, ipworks, no.

Non facciamo *******
La responsabilita' di permettere l'uso di un server di posta senza password non
spetta ne alla TECNOLOGIA (indy, ipworks etc..) ne al client (outlook
thunderbird etc) ma AL SERVER DI POSTA STESSO.

> e se SI, da qui la seconda considerazione - "reperire" queste
> 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.
4ndre4 2 Dic 2016 10:09
On Thursday, 1 December 2016 08:55:47 UTC, Emanuele Desideri wrote:

[...]
> e se SI, da qui la seconda considerazione - "reperire" queste
> 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.
Daniele 2 Dic 2016 10:34
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
enrico.giudici@gmail.com 2 Dic 2016 11:44
Ciao Daniele,

>
> 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.

infatti è quello che poi ho fatto.

Ciao e grazie da Enrico Giudici c/o Anthelios

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione Delphi | Tutti i gruppi | it.comp.lang.delphi | Notizie e discussioni delphi | Delphi Mobile | Servizio di consultazione news.