In una mia applicazine ho avuto la necessità di creare una procedura che, all’occorrenza, potesse inviare una e-mail a tutti gli indirizzi contenuti in una tabella di un database, utilizzando il client predefinito di posta elettronica.
Partendo dal presupposto che abbiamo già creato il nostro DataModule, che io per comodità ho chiamato DMSsn, con i relativi DataSet (nel mio caso al dataset ho dato il nome di Referenti), DataSource e li abbiamo settati correttamente, apriamo una nuova form, assegniamole un nome (nel mio caso frmVisResp) e salviamola, inseriamo fra le uses ShellApi.
Inseriamo fra le uses dopo implementation il nostro datamodule dopo di che aggiungiamo sulla form un pulsante (esempio BitBitn), rinominiamolo in btnMailingList ed assegnamo all’evento onClick del nostro pulsante il seguente codice:
procedure TfrmVisResp.btnMailingListClick(Sender: TObject);
var
gname, mail, gmail:string;
begin
while not DMSsn.Referenti.eof do
begin
gname:=DMSsn.ReferentiEMAIL.AsString;
gmail:=trim(gname)+';';
DMSsn.Referenti.Next;
ListBox1.Items.Add(gmail);
if ListBox1.Items.Text';' then
begin
mail:=trim(ListBox1.Items.Text);
end;
end;
ShellExecute(Handle, 'open', PChar('mailto:'+mail), nil, nil, SW_SHOWNORMAL);
end;
Compiliamo la nostra applicazione e cliccando sul pulsante vedremo che si avvierà il client di posta elettronica predefinito e nel campo del destinatario, saranno caricati gli indirizzi e-mail contenuti nella tabella del nostro database.
Nel caso in cui il campo e-mail del db è vuoto, tale indirizzo sarà saltato.
Ciao ed alla prossima.
