在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
关于用Delphi中的Indy控件实现收发邮件的几点学习记录 在做例子之前,应明白整个发送和接收邮件流程:
从此流程可以看出,客户向smtp服务器发出邮件后,由smtp服务器负责向收件人发出最终信件,这个过程由服务器完成,客户无需操心。客户所关心的只是怎样将邮件发送到smtp服务器上去。POP3更简单了,只需要正确登录到POP3服务器上,再下载需要的邮件即可。 用Indy创建收发电子邮件的例子: 1、创建工程,在窗体中加入IdSMTP1、IdMessage1和IdPOP31(Indy控件标签组)控件各一个。 2、设置 IdSMTP1.Host := 'SMTP.163.com';(我用的是163检试,具体也可选择其它服务器) IdSMTP1.Username := 'caoyan528';(此处即表示邮箱的帐号名,例如邮箱为:[email protected],则Username即为aaaaaa) IdSMTP1.Password := 'XXXXXXXX';(此处即为邮箱的密码,如[email protected]邮箱密码为123456,则Password即为123456)。 3、设置IdMessage1.From.Address := '[email protected]';(注意,此处的邮箱地址应在smtp.163.com中存在且就为以上设置的Username),IdMessage1.Recipients.EMailAddresses := ‘[email protected]’(此处表示收件人地址,只要是任何一个存在的邮箱地址即可) IdMessage1.Subject:= '第一个邮件客户端';(主题)具体源代码如下: procedure TForm1.Button4Click(Sender: TObject); tmpEMailItem : TIdEMailAddressItem; IdSMTP1.AuthenticationType := atLogin; //保证登录模式为Login IdMessage1.From.Address := '[email protected]'; tmpEMailItem := IdMessage1.Recipients.Add; //添加一个地址列表 tmpEMailItem.Text := '[email protected]'; //写一个收件人 idMessage1.BccList.Add.Text := '[email protected]'; //书写多个目标地址,实现群发 idMessage1.BccList.Add.Text := '[email protected]'; //书写多个目标地址,实现群发
IdMessage1.CharSet := 'gb2312'; //保证附件正文汉字的正常显示 IdSMTP1.Connect(); //连接SMTP服务器 自此,memo1中所写的内容被当作邮件发送了出去。而filename所指的附件也一同被发送到了服务器。
4、接收邮件 收以上的流程图不难看出,接收邮件完全是POP3服务器来完成的,客户只需连接到POP3服务器即可下载邮件。具体做法如下: 设置IdPOP31.Host := POP.163.com IdPOP31.Username := 'caoyan_528'; IdPOP31.Password:= 'XXXXX'; (此处的设置与SMTP的设置相同) 源代码如下: procedure TForm1.Button5Click(Sender: TObject);
for j:=0 to IdMessage1.MessageParts.Count-1 do //查看邮件所有内容,保证能够下载所有附件
end; 注意:以上在下载邮件附件时,若附件名包含汉字,则会触发异常,这就需要您想法转换汉字编码。若附件名没有汉字,以上代码不会出现异常。 希望对大家有所帮助。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论