PDA

Visualizza la versione completa : E-mail delphi


pegaso22
24-11-2003, 18:11
Ciao,
sono alla ricerca del comando che mi consenta di spedire un e-mail con un immagine(non in allegato) cosi come si può fare con Outlook facendo inserisci/immagine.
Sto utilizzando l'oggetto NMSMTP per l'invio dell'email(se è necessario posso anche cambiarlo).
Il tutto in delphi6.
Fatemi sapere, grazie.

alka
24-11-2003, 18:17
Scarica i componenti Indy dal sito Nevrona Designs (http://www.nevrona.com/indy).

Si tratta di una suite costituita all'incirca da 100 componenti che implementano di tutto (POP3, SMTP, TELNET, ...), sia dal punto di vista client che dal punto di vista server.

Te li consiglio poichè sono molto potenti e sono quelli adottati in Delphi 7 al posto del package NetMaster che stai utilizzando.

Il componente che fa al caso tuo è IdSMTP: si tratta di un componente che permette alla tua applicazione di agire come client SMTP per collegarsi ad un server SMTP e spedire una mail con allegati nella codifica che preferisci.

Io l'ho utilizzato per diversi motivi: invio di email di assistenza tecnica direttamente dal programma, spedizione di documenti integrata, ecc.

Dal sito Nevrona trovi anche riferimenti esterni a siti esplicativi con istruzioni, articoli ed esempi.

Ciao! :ciauz:

pegaso22
24-11-2003, 18:18
Grazie, ora controllo.

pegaso22
25-11-2003, 11:51
Ciao Alka,
ho frugato nel sito che mi hai consigliato ma non ho risolto tanto.
Non trovo demo.
Il componente che mi hai consigliato di usare (idSMTP) ce l'avevo già nella versione delphi6, ma non lo riesco a gestire.
Cosa mi consigli?
Hai qualche demo piccolissima da mostrarmi?

alka
25-11-2003, 12:02
Ti riporto il codice che ho utilizzato per inviare una mail con allegato.


procedure TForm1.bbSendClick(Sender: TObject);
var
FilePath: string;
Recipient: TIdEmailAddressItem;
begin
// SMTP setup
if cbMailLogon.Checked then
IndySMTP.AuthenticationType := atLogin
else
IndySMTP.AuthenticationType := atNone;
IndySMTP.Host := edHost.Text;
IndySMTP.Password := edPassword.Text;
IndySMTP.Port := StrToIntDef(edPort.Text, 25);
IndySMTP.Username := edUser.Text;
// Message setup
IndyMsg.Body.Clear;
IndyMsg.Body.Add('Test');
IndyMsg.Organization := edOrganization.Text;
IndyMsg.Subject := 'Simple mailer test';
IndyMsg.From.Address := edSenderAddress.Text;
IndyMsg.From.Name := edSenderName.Text;
Recipient := IndyMsg.Recipients.Add;
Recipient.Address := edToAddress.Text;
Recipient.Name := edToName.Text;
FilePath := ExtractFilePath(Application.ExeName) + 'data\demo.pdf';
TIdAttachment.Create(IndyMsg.MessageParts, FilePath);
IndySMTP.Connect;
try
IndySMTP.Send(IndyMsg);
finally
IndySMTP.Disconnect;
end;
end;


I componenti Indy sono dotati anche di una Guida in linea, che ho consultato per poter capire come funzionava il componente.

Nel codice, i dati per la spedizione del messaggio vengono presi ovviamente da controlli Edit che si trovano sul form (non posso riportare in chiaro i dati privati); il componente IndyMsg è di tipo TIdMessage e può essere inizializzato con i dati del messaggio da inviare, mentre il componente IndySMTP è di tipo TIdSMTP, che permette all'applicazione di fare da client per un server di posta SMTP allo scopo di inviare una email.

Per il significato delle singole proprietà e metodi utilizzati, ti rimando alla Guida in linea.

Ciao! :ciauz:

pegaso22
26-11-2003, 17:57
Ciao Alka, ho letto ora la risposta; non ho provato il codice che mi hai madato perchè ho letto come nota iniziale che il codice serviva per mandare e-mail con allegato. Credo di riuscire a mandare allegati anche io, a me però serve mandare un immagine nella schermata iniziale, come ho scritto nel primo messaggio, praticamente devo fare come si fà con outlook (inserisci/immagine).
Spero di essermi spiegato bene e che abbia una soluzione da darmi.
Fammi sapere. Ciao grazie.

alka
26-11-2003, 18:15
Se ho capito bene, devi inviare email in formato HTML contenenti immagini?

Non ho tempo per fare ricerche approfondite, ma credo che il componente IdMessage fornisca il supporto per tutte le alternative possibili nell'invio di un messaggio.

Attraverso la proprietà ContentType, puoi definire il tipo di contenuto del messaggio (solo testo, HTML, RTF, ecc.) mentre la proprietà MessageParts ti permette di comporre il messaggio pezzo per pezzo, inserendo elementi che andranno allegati al messaggio oppure incorporati al contenuto; da quello che si legge dalla Guida in linea, pare che sia MessageParts a gestire l'inserimento di contenuti in linea con la specificazione di un identificatore per richiamare un elemento e visualizzarlo nel testo, se necessario.

Nell'esempio che ti ho postato, viene creato un IdAttachment, un oggetto che dispone di diverse proprietà (che trovi spiegate sulla Guida in linea) per modificare le caratteristiche dell'allegato affinchè venga incorporato o disposto assieme ad altri elementi IdText, che sono analoghi all'Attachment ma contengono parti di testo da riunire nel messaggio.

Se il tuo scopo è quello di inviare newsletter informative (sto facendo un programma che esegue questa funzione), è sempre meglio inserire i riferimenti alle immagini del messaggio affinchè siano scaricate da un sito Web piuttosto che incorporate nel messaggio, poichè l'ultima opzione rischia di ingrandire di molto le dimensioni del messaggio stesso e renderlo meno interessante e scartabile da parte di molti recipienti.

Prova a creare un progetto vuoto di esempio in cui inserisci e configuri in diversi modi i componenti IdSMTP e IdMessage inviando mail ad una casella a te nota, per verificare il risultato ottenuto con ogni soluzione.

Altro non so, per il momento.

Ciao! :ciauz:

pegaso22
26-11-2003, 18:43
Hai centrato in pieno il discorso, il fatto che si appesantiscano troppo spero non sia determinante visto che le immagini incorporate che mando pesano circa 70kb.
Per il resto spero bene, mi metto a fare prove, anche se ci sono da qualche giorno dietro e sto trovando difficoltà.
Se hai novità al riguardo, scrivimi qua sul forum così dò un okkiata.
Ciao grazie mille.

pegaso22
27-11-2003, 11:45
Ciao,
Alka nell'ultimo messaggio mi ha scritto che è possibile modificare proprietà del IdAttachment affinchè venga incorporato o disposto assieme ad altri elementi IdText; che proprietà devo modificare per fare ciò? devo incorporare un immagine nella mia e-mail(ma non in allegato) e non ci riesco.
Cosa mi consigliate?
Alka, hai trovato qualcosa?
Fatemi sapere... grazie.

Loading