Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Turbo Power Internet Professionnal - Envoyer un email

Présentation 

Cette exemple permet d'envoyer un email avec si vous le souhaitez un fichier attaché. Pour réaliser cela, on utilise le composant TIpSMTPClient de Turbo Power Internet Professionlal.


Création de la partie visuelle du programme

Pour commencer, ajoutez dans votre fiche (form), trois composants TGroupBox, quatre composants TEdit, quatre composants TLabel, trois composants TButton et un TOpenDialog. Disposez ses composants comme ci-dessous.



Ensuite, ajoutez un composant TIpSMPTClient de l'onglet "iPRO" de la palette de composants de Delphi.

Le composant TIpSMTP permet d'envoyer des emails sur un serveur mail en utilisant le protocole SMTP (Simple Mail Transfer Protocol). Puis, modifiez la propriété "Caption" de la form en mettant "Envoyer un email avec TIpSMTPClient. Modifiez également la propriété "Caption" des trois composants TGroupBox ainsi que des trois composants TButton comme ci-dessus.

La partie visuelle du programme est maintenant terminé. On passe maintenant à la partie code du programme.


Remplir les différents paramètres de l'email

Pour envoyer un email, il faut spécifier le destinataire, l'expediteur, le sujet (appelé également l'objet) et le corp du message. Tout ceci correspond à un email. On peut aussi rajouter quelques options comme par exemple la date à laquelle on expédie le message.

IpSmtpClient1.Message.From :=Edit1.Text; //Adresse email de l'expediteur
IpSmtpClient1.Message.MailTo.Add(Edit2.Text); //Adresse email du destinataire
IpSmtpClient1.Message.Date:=DateToStr(Date); //Date de l'envoi du message
IpSmtpClient1.Message.Subject:=Edit4.Text; //Sujet du message
IpSmtpClient1.Message.EncodeBodyStrings(Memo1.Lines,''); //Corps du message


Attacher un fichier

Pour, on utilise un composant TOpenDialog. Le chemin du fichier est alors afficher dan un composant TEdit.

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit3.Text:=OpenDialog1.FileName; //Edit affiche le fichier choisit
end;

Le programme est conçu à pouvoir attacher un fichier ou non. Il faut donc vérifier qu'il y a quelque chose dans le composant TEdit avant d'attacher le fichier par la méthode "AttachementList".

if not (Edit3.Text='') then
IpSmtpClient1.AttachmentList.Add(Edit3.Text); //Attache le fichier


Envoie de l'email

Pour envoyer un email, nous utilisons deux variables ainsi qu'une procédure.


private
{ Déclarations privées }
FTask,FError:Boolean; //La variable "FTask" permet de vérifier si l'email a été envoyé
procedure Wait;
end;

L'email est envoyé grâce à la méthode "SendMail". On doit spécifier l'adresse de l'hôte ainsi qu'un paramètre de type "Boolean" (True ou False). "False" permet de se déconnecter après l'envoit du message et "True" permet de rester connecter (il suffit ensuite d'utiliser "Quit" pour se déconnecter).

IpSmtpClient1.SendMail('xxxx',False); //Envoi du message à l'hôte (par exemple pour Free : smtp.free.fr)
//"False" permet de se déconnecter du serveur après l'envoit de l'email
Wait; //Appel la procedure "Wait"
if FError=True then ShowMessage('L''email n''a pas été envoyé.'); //Affiche un message si il y a eu une erreur

Lorsque l'on evoie l'email, il faut attendre que la tâche a été effectuée. C'est le rôle de la procédure "Wait". Ensuite, si il y a eu une erreur (on détecte cela grâce à lévénement "OnError" cu composant TIpSMPTClient), on affiche un message informant l'utilisateur de cette erreur.

Pour attendre, on effectue une boucle. Lorsque la variable "FTask" ou "FError" est à "True" alors la boucle s'arrête. "Task" est à "True" lorsque l'événement "OnTaskComplete" du composant "TIpPOP3Client" se déclenche lorsque l'email a été envoyé.


procedure TForm1.IpSmtpClient1TaskComplete(Client: TIpCustomSmtpClient; Task: TIpSmtpTasks);
begin
if Task = stSendMail then
FTask:=True; //Indique que l'email a été envoyé
end;


procedure
TForm1.IpSmtpClient1Error(Sender: TObject; Socket: Cardinal; ErrCode: Integer; const ErrStr: String);
begin
//L'événement "OnError" se déclenche quand une erreur est détecté
FError:=True; //Indique qu'une erreur s'est produite
end;


procedure
TForm1.Wait;
begin
FTask:=False; //Initialise la variable "FTask" à False ("FTask permet d'indiquer lorsque l'email e été envoyé")
FError:=False; //Initialise la variable "FError" à False ("FError" permet d'indiquer si il y a une erreur)
repeat //Répéter...
Sleep(100); //Attend 100ms
Application.ProcessMessages; //Interrompt l'exécution du programme pour que Windows puisse traiter la file d'attente des messages des autres sources
until FError or FTask; //...jusqu'à ce qu'il y est une erreur ou que la tâche soit terminé
end;

Envoyer un email    [ 13-08-2003 ]
 Envoie un email avec le composant TIpSMTPClient de TurboPower Internet Professionnal.
Télécharger :  [8 Ko] [Télécharger tipsmptclient.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Tous droits réservés - Contacts
Haut de la page