Soyez le premier à donner votre avis sur cette source.
Vue 10 372 fois - Téléchargée 1 312 fois
unit EmailSender1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DSBtExit, DSControls, DSPanel, DSMagnetic, DSMarquee, DSButton, DSBtMenu, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, StdCtrls, DSPanelTools, ShellApi, ExtCtrls, DSPanelTitle, DSImgBarre, DSProgress, DSScope; type TSend1 = class(TThread) private protected procedure Execute();override; public constructor Create(); end; TForm1 = class(TForm) DSPanel1: TDSPanel; DSBtExit1: TDSBtExit; DSMarquee1: TDSMarquee; DSBtMenu1: TDSBtMenu; DSButton1: TDSButton; DSPanelTools1: TDSPanelTools; Label1: TLabel; IdSMTP1: TIdSMTP; IdMessage1: TIdMessage; DSPanelTools2: TDSPanelTools; Edit1: TEdit; DSPanelTitle1: TDSPanelTitle; DSPanelTools3: TDSPanelTools; Memo1: TMemo; DSPanelTools4: TDSPanelTools; ListBox1: TListBox; DSIndicator1: TDSIndicator; procedure DSBtExit1Click(Sender: TObject); procedure DSBtMenu1Click(Sender: TObject); procedure DSButton1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); private { Déclarations privées } public procedure WMDropFiles(var msg : TMessage); message WM_DROPFILES; { Déclarations publiques } end; var Form1: TForm1; implementation Uses WinInet; {$R *.dfm} constructor TSend1.Create; begin //ca je c pas a koi ca sert, mais ca sert FreeOnTerminate := True; inherited Create(false); //changer la priorité de la boucle Priority := tpHigher; end; function Detection_Connexion :boolean; var dwFlags : DWORD; begin dwFlags :=INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY ; RESULT := InternetGetConnectedState(@dwFlags,0); end; procedure TForm1.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin DSIndicator1.Position := Round(AWorkCount); end; procedure TSend1.Execute; //code à executer par le thread begin inherited; if Detection_Connexion = true then begin Form1.Label1.Caption:= 'Connexion...'; Form1.IdSMTP1.Connect; //Connexion try Form1.Label1.Caption:= 'Emission...'; Form1.IdSMTP1.Send(Form1.IdMessage1); //Envoi du message finally Form1.IdSMTP1.Disconnect; //Déconnexion Form1.Label1.Caption:= 'Email envoyé...'; end; Form1.ListBox1.Items.Clear; Form1.Memo1.Clear; Terminate; end else begin Form1.Label1.Caption:= 'Pas connecté à internet'; Terminate; end; end; procedure TForm1.WMDropFiles(var msg : TMessage); var hand: THandle; nbFich, i : integer; buf:array[0..254] of Char; begin hand:=msg.wParam; nbFich:= DragQueryFile(hand, 4294967295, buf, 254); for i:= 0 to nbFich - 1 do begin DragQueryFile(hand, i, buf, 254); Form1.ListBox1.Items.Add(buf); end; DragFinish(hand); end; procedure TForm1.DSBtExit1Click(Sender: TObject); begin Close; end; procedure TForm1.DSBtMenu1Click(Sender: TObject); begin Application.Minimize; end; procedure TForm1.DSButton1Click(Sender: TObject); var I: Integer; begin //Prepare le corps de l email IdMessage1.Clear; //Efface l'entête et le corps du message IdMessage1.From.Text:='EmailSender@hotmail.com'; //Adresse email de l'expediteur IdMessage1.ReplyTo.EMailAddresses:='EmailSender@hotmail.com'; //Adresse email où le destinataire pourra répondre IdMessage1.Recipients.EMailAddresses:=Edit1.Text; //Adresse email du destinataire IdMessage1.Date:=Date; //Date de l'envoi du message IdMessage1.Subject:='File(s) from EmailSender v2.00'; //Sujet du message IdMessage1.Priority:=mpNormal; //Priorité du message IdMessage1.Body.Assign(Memo1.Lines); //Corps du message //Attache les fichiers I:=0; ListBox1.Items.Add('Fin'); Application.ProcessMessages; while not(ListBox1.Items[I] = 'Fin') do begin if fileexists(ListBox1.Items[I]) then TIdAttachment.Create(idmessage1.MessageParts,ListBox1.Items[I]); I:=I+1; end; //Connexion au serveur smtp IdSMTP1.AuthenticationType:=atLogin; //Type d'authentification IdSMTP1.Host:='smtp.laposte.net'; //Hôte (ou par exemple pour Free : smtp.free.fr) IdSMTP1.Port:=25; //Port (par exemple pour Free : 25) IdSMTP1.UserName:='***i.***'; //Nom d'utilisateur IdSMTP1.Password:='****'; //Mot de passe TSend1.Create; end; procedure TForm1.FormCreate(Sender: TObject); begin Form1.Height:=205; Form1.Width:=285; DSPanel1.Left:=0; DSPanel1.Top:=0; DSPanel1.Width:=285; DSPanel1.Height:=205; DragAcceptFiles(Handle, true); DSIndicator1.Position := 0; end; end.
28 oct. 2005 à 03:27
y a t'il une version des compo. indy ou maintenant ce bug la est corrigé ??
quelle est la solution ?
bref, merci ;)
+
31 juil. 2005 à 16:01
17 févr. 2005 à 11:40
26 nov. 2003 à 20:09
Ds onWorkBegin il te suffit ds ce cas a mettre
Progressbar1.Position:=Round(AWorkCount/AWorkCountMax);
Et voila mais ds mon cas la cste AWorkCountMax est null!!!!!!!!!!!!!
26 nov. 2003 à 11:18
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.