注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

delphi 发送邮件的好代码  

2014-04-01 18:28:49|  分类: delphi xe5 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

完整代码如下

procedure TForm1.Button6Click(Sender: TObject); 

begin     

idsmtp1.Username:='xxxx@xxxxx.com';     

idsmtp1.Password:='******';     

idsmtp1.Port:=25;     

idsmtp1.Host:=myini.ReadString('MAIL','Host','');     

idsmtp1.HeloName:='SMTP';     

idsmtp1.MailAgent:='FoxMail';     

idsmtp1.ConnectTimeout:=5000;     

idsmtp1.IOHandler := TIdIOHandlerSocket.Create(nil);     idsmtp1.Socket.TransparentProxy := TIdConnectThroughHttpProxy.Create(nil);     idsmtp1.Socket.TransparentProxy.Enabled := true;     

idsmtp1.Socket.TransparentProxy.Host := '172.16.4.24';     

idsmtp1.Socket.TransparentProxy.Port := 8080;     

try       

try         

IdSMTP1.Connect;       

except         

showmessage('发件服务器忙请稍后再试!');       

end;       

IdMessage1.Subject:=trim(datetostr(dtp1.Date)+'出口统计');       

idmessage1.From.Address:='xxxx@xxxxx.com';       

idmessage1.From.Name:='xxx';       

idmessage1.Recipients.Clear;       

idmessage1.Recipients.EMailAddresses:=myini.ReadString('MAIL','revicer','');       

idmessage1.MessageParts.Clear;       TIdAttachmentFile.Create(idmessage1.MessageParts,myini.ReadString('filename','attachment',''));       idmessage1.Body.Clear;       

idsmtp1.Authenticate;       

idsmtp1.Send(IdMessage1);       

showmessage('成功');     

finally       

Idsmtp1.Disconnect;     

end; 

end;

调用抽象方法错误.你看TIdIOHandlerSocket或TIdConnectThroughHttpProxy是不是有某个抽象方法需要你继承然后处理

idsmtp1.IOHandler := TIdIOHandlerSocket.Create(nil); 提示如下信息: [Warning] Unit1.pas(1156): Constructing instance of 'TIdIOHandlerSocket' containing abstract method 'TIdIOHandler.CheckForDisconnect' 什么情况造成的?

那个放被声明为abstract方法!你要么重载它,要么就别用!多态知道不?。。。。。。

ok,解决了。

最终代码,给以后需要的。通过Http代理发送邮件,邮件服务器的host,username,password,收件人,附件等信息通过ini文件获得。 

From里加一个TIdConnectThroughHttpProxy,命名为IdConnectThroughHttpProxy1,

设置代理服务器的host,port,username,password等等。 

procedure TForm1.Button6Click(Sender: TObject); 

begin     

idsmtp1.Disconnect;     

idsmtp1.Username:= myini.ReadString('MAIL','Username','');     idsmtp1.Password:= myini.ReadString('MAIL','Password','');     

idsmtp1.Port:=25;     

idsmtp1.Host:=myini.ReadString('MAIL','Host','');     

idsmtp1.HeloName:='SMTP';     

idsmtp1.MailAgent:='FoxMail';     

idsmtp1.ConnectTimeout:=500;     

idsmtp1.IOHandler := TIdIOHandlerStack.Create(nil);     idsmtp1.Socket.TransparentProxy := IdConnectThroughHttpProxy1;     

try       

try         

IdSMTP1.Connect();       

except         

showmessage('发件服务器忙请稍后再试!');       

end;       

IdMessage1.Subject:=trim(datetostr(dtp1.Date)+'测试邮件'); //邮件标题       idmessage1.From.Address:= myini.ReadString('MAIL','Username',''); //发件人,必须和Username一致       idmessage1.From.Name:='自动发送';       idmessage1.Recipients.Clear;       idmessage1.Recipients.EMailAddresses:=myini.ReadString('MAIL','Recipent','');       idmessage1.MessageParts.Clear;       TIdAttachmentFile.Create(idmessage1.MessageParts,myini.ReadString('filename','Attachment',''));       idmessage1.Body.Clear;       

idsmtp1.Authenticate;       

idsmtp1.Send(IdMessage1);       

showmessage('成功');     

finally       

Idsmtp1.Disconnect;     

end; end;

  评论这张
 
阅读(593)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017