Turbo power internet professional : envoyer un email

Description

TurboPower Internet Professional (http://sourceforge.net/projects/tpipro/) est un ensemble de composants internet pour Delphi. On retrouve les composants permettant de travailler avec les protocoles POP3, SMTP, NNTP, FTP, HTTP.

Source / Exemple :


unit Unit1;

//Programme par Yoann
//http://delphipage.free.fr/

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, IpUtils, IpSock, IpMsg, IpSmtp;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    IpSmtpClient1: TIpSmtpClient;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure IpSmtpClient1TaskComplete(Client: TIpCustomSmtpClient;
      Task: TIpSmtpTasks);
    procedure IpSmtpClient1Error(Sender: TObject; Socket: Cardinal;
      ErrCode: Integer; const ErrStr: String);
  private
    { Déclarations privées }
    FTask,FError:Boolean; //La variable "FTask" permet de vérifier si l'email a été envoyé
    procedure Wait;
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button3Click(Sender: TObject);
begin
Close; //Ferme le programme
end;

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

procedure TForm1.Button2Click(Sender: TObject);
begin
Screen.Cursor:=crHourGlass; //Curseur sablier
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
if not (Edit3.Text='') then IpSmtpClient1.AttachmentList.Add(Edit3.Text); //Attache le fichier
IpSmtpClient1.Message.EncodeBodyStrings(Memo1.Lines,''); //Corps du message
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
Screen.Cursor:=crDefault; //Curseur par défaut
end;

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 programmes
until FError or FTask; //...jusqu'à ce qu'il y est une erreur ou que la tâche soit terminé
end;
end.

Conclusion :


Plus d'information sur : http://delphipage.free.fr/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.