做个邮件客户端过把瘾
IT商界
所用工具:Delphi 6/7
用途:从Delphi5开始,Borland就为我们提供了发送电子邮件的控件──NMSMTP。使用这个控件可以很轻松地实现发送电子邮件的功能。但是,由于垃圾邮件及群发软件的泛滥,大多数邮箱提供商都给SMTP加上了身份验证功能。因此,使用Delphi5中的NMSMTP控件将不能满足现在的需求,由于NMSMTP无法设置验证密码,在碰到需要验证身份的SMTP服务器时,将无法发送邮件。好在,从Delphi6开始,Borland就为我们提供了一个新的发送邮件的控件──IdSMTP,使用这个控件就可以实现身份验证的功能了。IdSMTP与NMSMTP在使用上有所区别。下面主要讲解如何使用IdSMTP发送邮件(本文以Delphi7为例)。
第一步:首先,在Delphi7中新建一个工程。添加如下控件(这些控件在Standard面板中可以找到),然后调整一下控件的位置,大概界面如图1。添加的控件属性如下几个表所示:
添加8个Label控件(图2);添加7个Edit控件(图3),属性设置参考表1;添加一个Memo控件(图4),属性设置参考表2;添加两个Button控件(图5);添加一个OpenDialog控件(在Dialogs面板中,如图6),用于浏览附件。
第二步:界面完成后,接着就添加两个发送邮件时需要的控件:选择Indy Clients面板中的IdSMTP(图7)及Indy Misc面板中的IdMessage(图8),分别放置在窗体上。
提示:在编写代码之前,先介绍一下IdSMTP及IdMessage它们各自所起的作用。
IdSMTP主要用于发送电子邮件。SMTP服务器地址、账户及账户密码都是在IdSMTP控件中进行设置;IdMessage主要设置发件人地址、发件人姓名、接收人地址、邮件的主题、邮件的正文等信息。因此,在使用IdSMTP发送邮件时,IdMessage是必不可少的。
好,下面开始编写代码:
第三步:先编写“浏览”附件的代码,双击“浏览”按钮,添加下面的代码:
// 添加附件
OpenDialog1.FileName := '';
OpenDialog1.Filter := '所有文件|*.*';
if OpenDialog1.Execute then
begin
edt_File.Text := OpenDialog1.FileName;
end;
第四步:接下来编写与发送邮件有关的代码。
与使用FoxMail时一样,第一次使用时都将进行账户设置,所以我们先设置IdMessage控件。
提示:通过这代码大家也可从中学会IdMessage控件的使用。
双击“发送邮件”按钮,添加下面的代码:
// 发件人地址
IdMessage1.From.Address := edt_From.Text;
// 发件人姓名
IdMessage1.From.Name := edt_UserName.Text;
// 收件人地址
IdMessage1.Recipients.EMailAddresses := edt_To.Text;
// 主题
IdMessage1.Subject := edt_Subject.Text;
// 填写正文
IdMessage1.Body.Add(Memo 1.Text);
第五步:如果你想添加附件,接着上面的代码使用下面这句代码即可实现:
// 添加附件
TidAttachment.Create(IdMessage1.MessageParts, edt_File.Text);
其中,第二个参数即是附件的路径。
第六步:IdMessage设置完成后,接下来就开始编写发送邮件代码了(接着上面的代码写):
// SMTP服务器
IdSMTP1.Host := edt_SMTP.Text;
// 账号
IdSMTP1.Username := edt_UserName.Text;
// 密码
IdSMTP1.Password := edt_Psw.Text;
// 登录时验证身份
IdSMTP1.AuthenticationType := atLogin;
// 连接服务器
IdSMTP1.Connect;
// 发送邮件
IdSMTP1.Send(IdMessage1);
提示:好了,代码部分就编写完了。先进行保存,以免发生意外。点击工具栏中的“Save All”按钮。输入单元名称及工程名称即可,需要注意的是,单元名称不能与工程名称相同。
保存好后,按F9运行程序,点击“发送邮件”按钮就可以发送电子邮件了。
补充:
最后再讲讲IdSMTP控件提供的几个事件(表3)。
如果要在发送完邮件后弹出提示信息,可以在OnWorkEnd事件中编写代码:
ShowMessage('发送完毕!');
//连接关闭
IdSMTP1.Disconnect;









