中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > 综合文章
用Delphi编写SMTP邮件发送程序
作者:未知 时间:2005-08-07 20:59 出处:编程爱好者网站 责编:chinaitpower
              摘要:用Delphi编写SMTP邮件发送程序
文/胡勇智

  平时你使用的是什么工具发送电子邮件?是Outlook,Foxmail或是其它?无论以前是什么,现在你都可以多一种选择:使用自己编写的邮件发送程序。而且对于Delphi来说,要完成它是如此的简单,那就让我们动手吧!

  构件组成

  
  Delphi 5构件板的FastNet页中,提供了TNMSmtp构件,它的功能就在于将邮件发送到指定的邮件服务器。其最常用的属性和方法如下:

  Host:SMTP邮件服务器的地址,如SMTP.SINA.COM.CN

  Port:SMTP邮件服务器的端口号,一般用其默认值25即可

  UserID:用户名,当与邮件服务器建立连接时,需验证用户名

  PostMessage.FromAddress:发件人地址

  PostMessage.ToAddress:收件人地址

  PostMessage.Attachments:邮件附件的文件列表

  PostMessage.Body:邮件的正文

  PostMessage.Subject:邮件的主题

  Connect方法:建立与SMTP服务器的连接,连接前需指定Host和UserID

  Disconnect方法:断开与服务器之间的连接

  SendMail方法:将当前邮件发送到服务器

  当然,TNMSmtp构件还有很多其它的属性、方法、事件,在这里我们不作介绍,需要时大家可以查阅相关资料或Delphi的帮助信息。

  实现方式

  首先在Form1中加入相应的TLabel、TEdit、TMemo、TButton、TListBox、TOpenDialog和TNMSmtp构件。其中,TMemo用于书写邮件内容,TListBox显示附件项目,TOpenDialog(文件打开对话框)用于选择附件文件,按钮Button1添加附件,按钮Button2连接服务器并发送邮件。程序的具体代码如下:

  procedure TForm1.Button1Click(Sender: TObject);

  begin

  if OpenDialog1.Execute then ListBox1.Items.Add(OpenDialog1.FileName);

  //将选择的文件项添加到ListBox1中,作为附件

  end;

  procedure TForm1.Button2Click(Sender: TObject);

  begin

  NMSmtp1.Host:=Edit3.Text; //SMTP服务器地址

  NMSmtp1.UserID:=Edit4.Text; //你在对应服务器上的注册用户名

  NMSmtp1.Connect; //与服务器建立连接

  NMSmtp1.PostMessage.FromAddress:=Edit5.Text; //发件人的邮件地址

  NMSmtp1.PostMessage.Subject:=Edit2.Text; //邮件主题

  NMSmtp1.PostMessage.ToAddress.Add(Edit1.Text); //收件人的邮件地址

  NMSmtp1.PostMessage.Attachments.AddStrings(ListBox1.Items); //附件

  NMSmtp1.PostMessage.Body.Assign(Memo1.Lines); //邮件的正文

  NMSmtp1.SendMail; //发送邮件

  NMSmtp1.Disconnect; //断开连接

  ShowMessage('发送完毕!'); //发送完时显示提示信息

  end;

  以作者为例:我的一个邮箱为dyhuyz@163.com,利用SMTP.163.com邮件服务器向《中国电脑教育报》编辑部发信时,在Edit1中填入编辑部的地址soft@cce.com.cn,Edit2中写上主题,Edit3中填入SMTP.163.com,Edit4中填入用户名dyhuyz,Edit5中填入我的地址dyhuyz@163.com,添加附件后,单击发送按钮,一切OK了!

  注意事项

  需要特别说明的是:目前部分网站的SMTP邮件服务器要对发送邮件的用户进行身份验证,即要求给出用户名和密码信息,否则无法发送,包括163.net,263.net,sina.com,sohu.com等均在此列。而Delphi 5的TNMSmtp构件本身未提供“密码”属性,采用以上简单方法,不能利用这些服务器发送邮件,否则会出现错误信息;Delphi 6中用Indy构件组取代了Delphi 5中的FastNet构件组,其中的SMTP包含有身份验证的相关信息,可以很方便地解决这个问题。另一部分网站,如China.com,163.com等,则不要求身份验证,利用本程序,尽可畅通无阻。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有