用Indy发信,是不是每发一封信都要连接一次? ( 积分: 100 )

  • 主题发起人 主题发起人 iseek
  • 开始时间 开始时间
我的意思是说:
比如我有10封信要发,我想用一个循环将它们依次发出去.
发邮件的代码大致如下:
SMTP.Host := 'smtp.tom.com';
SMTP.Port := 25;
smtp.Username:='someone';
smtp.Password :='******';
smtp.AuthenticationType:=atLogin;
idM.Body.Clear ;
idM.Body.add('test');
idM.From.Text:='my@tom.com';
idM.Recipients.EMailAddresses:='dzjlb@vip.sina.com';
idM.Subject:='test';
try
smtp.Connect;
smtp.Send(idM);
finally
if SMTP.Connected then
SMTP.Disconnect;
end;
在循环里,上面的代码全要过一遍?还是只需要smtp.Send(idM)就可以了?
 
替你顶顶,第一个沙发
 
只需连接一次(也一定是在最后才操作一次断开),可以发送多个邮件的, 即:
smtp.Connect;
for i:=1 to 10 do smtp.Send(idM);
smtp.Disconnect;
// 当然具体代码中要加上错误(失败)判断等...
 
刚才试验成功了.是可以的.
 
谢谢天河流星.
还想问问,是不是服务器对一次发多少封有限制?
 
各种(各个)服务器有很多限制的, 例如附件大小、单位时间内(一小时内)的传输总量、...
总之, 邮件服务器忙的时候可能会拒绝你的操作, 但你可以过一会儿再连接再操作(发送或者接收);
你可以多做一些测试: 例如: @163.com, @tom.com; @21cn.com; @sina.com.cn; @yahoo.com.cn;.... 都不一样的
 
天河流星,谢谢你啊.分给你了.
 
接受答案了.
 
也多谢你了,祝你成功!
 
后退
顶部