[go: up one dir, main page]

Menu

[r22]: / rpsendmailvcl.pas  Maximize  Restore  History

Download this file

130 lines (113 with data), 3.3 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
unit rpsendmailvcl;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls,rpmdconsts, ComCtrls,rpsendmail;
type
TFRpSendMailVCL = class(TForm)
BCancel: TButton;
LProgress: TLabel;
BProgress: TProgressBar;
LKylobytes: TLabel;
procedure FormCreate(Sender: TObject);
procedure BCancelClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
cancelled:boolean;
dologin:Boolean;
fromaddress,fromname,smtpserver,
username,password,subject,content,recipients,cc:String;
attatchments:TStrings;
oldonidle:TIdleEvent;
wasok:Boolean;
ErrorMessage:String;
procedure AppIdle(Sender:TObject;Var done:Boolean);
procedure OnProgress(amessage:WideString;bytecount,bytetotal:Integer;
var docancel:Boolean);
public
{ Public declarations }
end;
function SendMailWithProgress(dologin:Boolean;fromaddress,fromname,smtpserver,
username,password,subject,content,recipients,cc:String;
attatchments:TStrings):Boolean;
implementation
{$R *.DFM}
function SendMailWithProgress(dologin:Boolean;fromaddress,fromname,smtpserver,
username,password,subject,content,recipients,cc:String;
attatchments:TStrings):Boolean;
var
dia:TFRpSendMailVCL;
begin
dia:=TFRpSendMailVCL.Create(Application);
try
dia.dologin:=dologin;
dia.fromaddress:=fromaddress;
dia.fromname:=fromname;
dia.smtpserver:=smtpserver;
dia.username:=username;
dia.password:=password;
dia.subject:=subject;
dia.content:=content;
dia.recipients:=recipients;
dia.cc:=cc;
if assigned(attatchments) then
dia.attatchments.Assign(attatchments);
dia.oldonidle:=Application.OnIdle;
Application.OnIdle:=dia.AppIdle;
dia.ShowModal;
Result:=dia.wasok;
if not Result then
Raise Exception.Create(dia.ErrorMessage);
finally
dia.free;
end;
end;
procedure TFRpSendMailVCL.FormCreate(Sender: TObject);
begin
attatchments:=TStringList.Create;
wasok:=false;
Caption:=SRpTransmiting;
BCancel.Caption:=SRpCancel;
LProgress.Font.Style:=[fsBold];
LKyloBytes.Font.Style:=[fsBold];
cancelled:=false;
end;
procedure TFRpSendMailVCL.AppIdle(Sender:TObject;Var done:Boolean);
begin
done:=false;
Application.OnIdle:=oldOnidle;
try
SendMail(dologin,fromaddress,fromname,smtpserver,username,
password,subject,content,recipients,cc,attatchments,OnProgress);
wasok:=true;
except
on E:Exception do
begin
ErrorMessage:=E.Message;
wasok:=false;
end;
end;
Close;
end;
procedure TFRpSendMailVCL.BCancelClick(Sender: TObject);
begin
cancelled:=true;
end;
procedure TFRpSendMailVCL.FormDestroy(Sender: TObject);
begin
attatchments.free;
end;
procedure TFRpSendMailVCL.OnProgress(amessage:WideString;bytecount,bytetotal:Integer;
var docancel:Boolean);
begin
LProgress.Caption:=Amessage;
BProgress.Max:=bytetotal;
BProgress.Position:=bytecount;
BProgress.Visible:=bytetotal>0;
LKyloBytes.Caption:='';
if bytecount>0 then
LKyloBytes.Caption:=FormatFloat('##,###0.00 Kbytes',bytecount/1024);
Application.ProcessMessages;
docancel:=cancelled;
end;
end.