Z
zhk7324385
Unregistered / Unconfirmed
GUEST, unregistred user!
下面这段群发邮件代码如何改成多线程的,请高手帮忙! with Query1do
begin
Query1.Close;
Query1.SQL.Text := 'SELECT * FROM fasong';
//这里存放的是多个收件人地址 Query1.Open;
while not Query1.Eofdo
//看有多少个收件人的循环,这里怎么改为多线程 begin
//构造邮件 MailMessage.Subject :=ObjectE.Text;//标题 MailMessage.Body.Assign(BodyMemo.Lines);
//正文 MailMessage.From.Address :=Trim(d);
//发信人地址 MailMessage.Recipients.EMailAddresses :=Query1.FieldByName('mail').AsString;
//收信人地址 // mailMessage.MessageParts with MailMessage do
begin
if SlaveLB.Count > 0 then
begin
for k:=0 to SlaveLB.Count - 1 do
TIdAttachment.Create(MailMessage.MessageParts,SlaveLB.Items[k]);
end;
end;
//初始化SMTP属性 IdSMTP.Host :=Trim(a);
//SMTP服务器地址 IdSMTP.Port :=StrToInt(b);
//SMTP服务器端口 // IdSMTP.UserId:='zhk870319@sina.com';
// IdSMTP.Password:='zhk7322541';
IdSMTP.UserId :=Trim(d );
IdSMTP.Password :=Trim(e);
//连接到SMTP服务器 StatusBar1.SimpleText:='准备连接到服务器:'+a;
// MemoInfo.Lines.Add('准备连接到服务器:'+SetMailForm.SMTPE.Text);
Try IdSMTP.Connect ;
except begin
StatusBar1.SimpleText:='无法连接到服务器:'+a;
// MemoInfo.Lines.Add('无法连接到服务器:'+SetMailForm.SMTPE.Text);
end;
end;
//end try //验证身份 if (IdSMTP.AuthSchemesSupported.IndexOf('LOGIN')<>-1) then
begin
//服务器要求验证 StatusBar1.SimpleText:='服务器要求进行身份验证' ;
// MemoInfo.Lines.Add('服务器要求进行身份验证');
IdSMTP.Authen
ticationType :=atLogin;
StatusBar1.SimpleText:='服务器开始进行身份验证' ;
// MemoInfo.Lines.Add('服务器开始进行身份验证');
try if IdSMTP.Authen
ticate then
//通过验证 StatusBar1.SimpleText:='服务器通过身份验证' // MemoInfo.Lines.Add('服务器通过身份验证') else
StatusBar1.SimpleText:='服务器验证失败' ;
// MemoInfo.Lines.Add('服务器验证失败');
except begin
Application.MessageBox('服务器验证失败', '', MB_OK + MB_ICONINFORMATION);
StatusBar1.SimpleText:='服务器验证失败' ;
// MemoInfo.Lines.Add('服务器验证失败');
IdSMTP.Disconnect ;
//异常刚断开连接 end end;
//end try end else
begin
//服务器不要求验证 StatusBar1.SimpleText:='服务器不需要验证' ;
// MemoInfo.Lines.Add('服务器不需要身份验证');
end;
//发送信件 try IdSMTP.Send(MailMessage);
i:=i+1;
t:=t+' '+Query1.FieldByName('mail').AsString;
except StatusBar1.SimpleText:='发送失败' ;
j:=j+1;
f:=f+' '+Query1.FieldByName('mail').AsString;
// MemoInfo.Lines.Add('发送失败');
end;
IdSMTP.Disconnect ;
//发送完后断开连接 query1.Next;
end;
end;
begin
Query1.Close;
Query1.SQL.Text := 'SELECT * FROM fasong';
//这里存放的是多个收件人地址 Query1.Open;
while not Query1.Eofdo
//看有多少个收件人的循环,这里怎么改为多线程 begin
//构造邮件 MailMessage.Subject :=ObjectE.Text;//标题 MailMessage.Body.Assign(BodyMemo.Lines);
//正文 MailMessage.From.Address :=Trim(d);
//发信人地址 MailMessage.Recipients.EMailAddresses :=Query1.FieldByName('mail').AsString;
//收信人地址 // mailMessage.MessageParts with MailMessage do
begin
if SlaveLB.Count > 0 then
begin
for k:=0 to SlaveLB.Count - 1 do
TIdAttachment.Create(MailMessage.MessageParts,SlaveLB.Items[k]);
end;
end;
//初始化SMTP属性 IdSMTP.Host :=Trim(a);
//SMTP服务器地址 IdSMTP.Port :=StrToInt(b);
//SMTP服务器端口 // IdSMTP.UserId:='zhk870319@sina.com';
// IdSMTP.Password:='zhk7322541';
IdSMTP.UserId :=Trim(d );
IdSMTP.Password :=Trim(e);
//连接到SMTP服务器 StatusBar1.SimpleText:='准备连接到服务器:'+a;
// MemoInfo.Lines.Add('准备连接到服务器:'+SetMailForm.SMTPE.Text);
Try IdSMTP.Connect ;
except begin
StatusBar1.SimpleText:='无法连接到服务器:'+a;
// MemoInfo.Lines.Add('无法连接到服务器:'+SetMailForm.SMTPE.Text);
end;
end;
//end try //验证身份 if (IdSMTP.AuthSchemesSupported.IndexOf('LOGIN')<>-1) then
begin
//服务器要求验证 StatusBar1.SimpleText:='服务器要求进行身份验证' ;
// MemoInfo.Lines.Add('服务器要求进行身份验证');
IdSMTP.Authen
ticationType :=atLogin;
StatusBar1.SimpleText:='服务器开始进行身份验证' ;
// MemoInfo.Lines.Add('服务器开始进行身份验证');
try if IdSMTP.Authen
ticate then
//通过验证 StatusBar1.SimpleText:='服务器通过身份验证' // MemoInfo.Lines.Add('服务器通过身份验证') else
StatusBar1.SimpleText:='服务器验证失败' ;
// MemoInfo.Lines.Add('服务器验证失败');
except begin
Application.MessageBox('服务器验证失败', '', MB_OK + MB_ICONINFORMATION);
StatusBar1.SimpleText:='服务器验证失败' ;
// MemoInfo.Lines.Add('服务器验证失败');
IdSMTP.Disconnect ;
//异常刚断开连接 end end;
//end try end else
begin
//服务器不要求验证 StatusBar1.SimpleText:='服务器不需要验证' ;
// MemoInfo.Lines.Add('服务器不需要身份验证');
end;
//发送信件 try IdSMTP.Send(MailMessage);
i:=i+1;
t:=t+' '+Query1.FieldByName('mail').AsString;
except StatusBar1.SimpleText:='发送失败' ;
j:=j+1;
f:=f+' '+Query1.FieldByName('mail').AsString;
// MemoInfo.Lines.Add('发送失败');
end;
IdSMTP.Disconnect ;
//发送完后断开连接 query1.Next;
end;
end;