说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

SMTP组件的使用方法-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
SMTP组件的使用方法-Delphi资料

Borland的Delphi3提供了FTP、HTML、HTTP、SMTP等14个Internet组件,使得开发Internet应用程序变得轻松有趣。我们利用其中一个名为SMTP Client的ActiveX组件, 可简单的设计一个E-Mail发送程序。

一、用SMTP组件发送E-Mail的步骤

1、连接SMTP服务器:SMTP1.Connect(RemoteHost:string

RemotePort:longint);Remotehost即SMTP服务器。

2、制作邮件头:可用SMTP.DocInput.Headers.Add(Name

Value:string)方法

增加电子邮件的头信息,主要包括有发件人E-mail地址、收件人E-mail地址、所采用的文件格式和字符集、发送软件名称等项目,供SMTP1.SendDoc方法使用。

3、发送邮件:SendDoc(URL:string

Headers:DocHeaders

InputData:VARIANT

InputFile:string

OutputFile:string);

发送时必须保证SMTP1.State(连接状态)为prcConnected,才能正确发送。

二、监控SMTP组件运行时状态的方法

1、连接状态:SMTP组件共有6种有关连接的状态

(1)prcConnecting : 正在连接

(2)prcResolvingHost : 解析主机地址

(3)prcHostResolved : 解析完成

(4)prcConnected : 已经建立连接

(5)prcDisConnecting : 正在撤消连接

(6)prcDisConnected : 已经撤消连接

上述6种状态可在SMTP组件的OnStateChanged事件中监控,用于显示连接进程。

2、发送状态:SMTP组件在发送邮件时也有6种状态

(1)icDocNone : 没有传送数据

(2)icDocBegin : 开始传送(初始化)

(3)icDocHeaders : 传送邮件头信息

(4)icDocData :传送邮件内容

(5)icDocErroe : 传送出错

(6)icDocEnd : 传送结束

上述6种状态可在SMTP的OnDocInput事件中监控,用于显示传送进程。

三、窗体设计

1、设置窗体Form1的Font.name为宋体,Font.Size为12。

2、在窗体Form1上放置SMTP1、Button1、OpenDialog1、Panel1、Edit1、SMTP1、Bevel1、Label1、Memo1等19个组件。布局参见程序运行时界面(图一)。

3、设置Button3.Enabled为False;设置Memo1.lines为空,Memo1.ScrollBars为ssVertical;设置OpenDialog1.Filter为“文本文件|*.TXT|所有文件|*.*”。

四、运行举例

给ty@163.netE-mail:

1、设置我的E-mail地址为cq98@263.net,SMTP服务器为263.net

收件人E-mail地址为ty@163.net,邮件主题为“问候”,在Memo1备注框输入邮件内容。也可打开一个现有的文本文件放入Memo1备注框。

2、按“建立连接”,在提示框出现“已经建立连接”、“发送邮件”按钮变为允许时,按“发送邮件”按钮即可将E-mail发出,发送结束时,提示框将提示“邮件发送完成”。同时,在程序运行过程时,提示框中可不断提示连接或发送的状态。图一为本程序运行时的界面。

3、退出程序应撤消与SMTP服务器的连接。

五、源程序

unit Unit1;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

ComCtrls

ToolWin

OleCtrls

isp3

StdCtrls

Buttons

ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

SMTP1: TSMTP;

Memo1: TMemo;

OpenDialog1: TOpenDialog;

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Panel4: TPanel;

Panel5: TPanel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Bevel1: TBevel;

Label1: TLabel;

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure SMTP1StateChanged(Sender: TObject; State: Smallint);

procedure Button1Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure SMTP1DocInput(Sender: TObject; const DocInput: DocInput);

procedure SMTP1Error(Sender: TObject; Number: Smallint;

var Description: WideString; Scode: Integer; const Source

HelpFile: WideString; HelpContext: Integer;

var CancelDisplay: WordBool);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

SMTPerror: Boolean;

implementation

{$R *.DFM}

function GetNoParam: Variant; {缺省的参数}

Var V: Variant;

begin

TVarData(V).VType := varError;

TVarData(V).VError := DISP_E_PARAMNOTFOUND;

GetNoParam := V;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if SMTP1.state=prcConnected then

SMTP1.Quit {撤消连接}

else

if SMTP1.State=prcDisConnected then begin

SMTP1.RemoteHost:=edit2.text; {SMTP服务器}

SMTP1.Connect(GetNoParam

GetNoParam); {建立连接}

Application.ProcessMessages;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

SMTPerror:=False;

while SMTP1.Busy do Application.ProcessMessages;

with SMTP1 do begin

DocInput.Headers.Clear; {邮件头信息}

DocInput.Headers.Add('From'

edit1.Text); {发件人地址}

DocInput.Headers.Add('To'

edit3.Text); {收件人地址}

if edit4.Text<>'' then

DocInput.Headers.Add('CC'

edit4.Text); {抄送地址}

DocInput.Headers.Add('Subject'

edit5.Text); {邮件主题}

DocInput.Headers.Add('X-mailer'

'MyMailer [Cao ZuQuan HBZJ]'); {发送软件名称}

DocInput.Headers.Add('Message-Id'

Format('%s %s %s'

[Application.Title

DateTimeToStr(Now)

edit1.Text])); {邮件标识、文件格式和字符集}

DocInput.Headers.Add('Content-Type'

'text/plain; charset="GB2312"');

SendDoc(GetNoParam

DocInput.Headers

Memo1.Text

''

''); {发送邮件}

end;

end;

procedure TForm1.SMTP1StateChanged(Sender: TObject; State: Smallint);

begin

case State of

prcConnecting:

Label1.Caption:='正在连接'+SMTP1.RemoteHost+'...';

prcResolvingHost:

Label1.Caption:='解析服务器地址...';

prcHostResolved:

Label1.Caption:='服务器地址解析完成';

prcConnected:

begin

Label1.Caption:='已经建立连接';

Button2.Caption:='撤消连接';

end;

prcDisconnecting:

Label1.Caption:= '正在撤消连接...';

prcDisconnected:

begin

Label1.Caption:= '已经撤消连接';

Button2.Caption := '建立连接';

end;

end;

Button3.Enabled:= state=prcConnected;

end;

procedure TForm1.SMTP1DocInput(Sender: TObject;

const DocInput: DocInput);

begin

case DocInput.State of

icDocBegin:

Label1.Caption:= '邮件初始化...';

icDocHeaders:

Label1.Caption:= '发送邮件头信息...';

icDocData:

Label1.Caption:= '发送邮件内容...';

icDocEnd:

if SMTPError then

Label1.Caption:= '发送出错!!!'

else

Label1.Caption:= '邮件发送完成!';

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin {打开一个文本文件,将其内容作为邮件正文}

if Opendialog1.Execute then begin

Memo1.Lines.Clear;

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin {退出系统}

if SMTP1.state=prcConnected then SMTP1.Quit;

Close;

end;

procedure TForm1.SMTP1Error(Sender: TObject; Number: Smallint;

var Description: WideString; Scode: Integer; const Source

HelpFile: WideString; HelpContext: Integer; var CancelDisplay: WordBool);

begin {当发送出现错误时触发本事件}

SMTPerror:=True;

end;

end.

Google新创意:天花板加麦克风 人脑植芯片 苹果获弯曲屏新专利 可给手机弄个大波浪卷 真正的跨平台硬件测试:3DMark已打通PC、iOS、Android 将Chrome浏览器变成终端工具 【开源推荐】AllJoyn:打造全球物联网的通用开源框架 21张图带你走进Google数据中心 Snapchat C轮融资5000万美元 投资方是Coatue Management 又一个被谷歌寄生的平台,Chrome应用启动器现来到OS X上 雷军遇上刘德华:创业、艺术、移动互联网 为了抗衡Android,传微软开始考虑WP和WinRT免费 维护代码库的五个精华实践 微软发布安全补丁 IE11.0.2随之而来 Qt 5.2正式版发布 全面支持移动平台 如何节约手游制作成本?揭秘CocoStudio编辑器强悍功能 市场竞争白热化:三大云服务商上演双十二“三国杀” UCloud联手盛科实现SDN硬件应用 AWS,还有多远? Instagram推新私信功能Direct:支持照片、视频和文本信息 微软CEO鲍尔默最后一次受访:我的正确决定远远大于过错 中国创新碰撞硅谷思潮, 2013云世界大会定义云时代 Mozilla与设备商、运营商成立开放Web设备联盟 研发周报:暴露程序员身份的8个行为 专访“月熊志”公益网站技术负责人:利用技术的力量保护动物 【Hadoop技术博客推荐】站在风口的Hadoop技术研究者 2014趋势预测,大数据将成主流 国人当自强:两岸三地在线编程学习网站大搜罗 一周消息树:微软畏惧Chromebook、苹果失去优秀工程师 Google Dart语言开启标准化历程,取代JavaScript仍艰难 11款网站死链检测工具 谷歌Chromecast 2014:开放SDK、建生态系统 大举进攻客厅 优秀程序员的6个共同特质 搞一个专业的VC程序员基地~~~~~~ 请大虾出手:MFC的DLL工程, 我实现了把一个dll工程的menu装载到我的主工程,但与其对应的Tool 怎样将一个全局数组附值后再传入一个函数或过程中,而数组中的值不变? 如何在我的程序中取得别的程序中某一控件的句柄(hwnd)? 小弟的软件刚发布请各位高手指点!来者都给分 使用存储过程建立数据集时怎样指定数据集参数? 救命:Beta2安装时候出错:在Disk1上找不到源文件。 如何将图标文件存入到一个dll文件中? ********杨家将请进********** 求救!!为什么我一打开windows就出现说缺少dll文件,storm.dll,还有load.exe.是为什么呀? 请大虾出手:MFC的DLL工程, 我实现了把一个dll工程的menu装载到我的主工程,但与其对应的ToolBar怎么调出来呢??我很着急! 在mdi表單中調用設為最大化的子表單時,它首先顯示小的子表單,然后才把它最大化,影響美觀,有何辦法解決? 关于在菜单中陷入文本框 20分求助有关SQL数据库的问题(为什么select...into语句无法执行) 哪有里Crystal Reports可以下载(无内容)? Where the 广东外贸外语学院 关于ODBC客户机端配置的问题 谁能给我一个delphi连接access数据库的实例,小弟万分感谢!!!!!!!!!!!!! 我机器里,98,2000装在C盘,XP装在D盘,现在我想只留下XP,不知道该怎么处理???????????????????????????? 如何实现5M以上的文件的上传 从windows进入unix Oracle 中文输入 是否onkeypress和onkeydown不能同时使用呀? Delphi 5下要做一个多 Y 轴的曲线图形,如何实现? 哪有xteamlindows下载?? 万分感谢!!!!! borland 会不会出一个 C# Builder? 乱码,头大了,不知道为什么pb导入excel怎么办 数据统计问题,请大侠门帮忙!急急急!!! 求解ZModem通讯协议源程序----有谁用过CZModemCore 我也不知道对不对! 最高级的问题?搞一个专业的VC程序员基地~~~~~~ 在研究directshow filter的push模式的兄弟请进 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了 有两个问题,每题40分,马上给分!!!! 如何使用打印机? 在爱情方面谁能做到这一点? 谁有 file cutter v1.4的注册码? 有急用! 搞一个专业的VC程序员基地~~~~~~谁愿意加入????? 最新发现:原来C++Bilder的项目文件(.bpr)是XML格式的! 关于FAT32和NTSF的问题 如何用VC实现Email的发送? 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了! 搞一个专业的VC程序员基地~~~~~~需要网页制作高手!! ADO 的用法 m_pRecordset->Fields->GetItem(index)->GetName() 关于CRichEditCtrl的问题之二,取的当前可见行数? 请问在哪里下载IMAIL SERVER???各位帮帮忙!!! 高手请回答,ADO和BDE到底有什么区别,你选择谁?为什么? 高分求教!!!!!!!!!!!!!!!!怎样得到局域网上所有的机器名?(普通WINDOWS网络,用VB?,好象用WNET API可以的) 如何安装com.ibm.bridge2java.*这个包阿? 有人吗???求救! 原谅我有点笨- -.在101kpa时水的凝固点是0摄氏度,为什么是零摄氏度?kpa这个单位是什么意思 蛋白质的那课,什么氨基,羧基,肽键,肽链,空间结构,氨基酸,整课都听不懂啊~就通俗点解释下把,它们之间的关系,通式什么的. 上海哪里有买欧姆龙血压计的吗?母亲节快到了,想给妈妈买个欧姆龙原装进口的机器?上海哪里有买?可以打折吗? kPa是什么单位?表示 什么? 形容读书刻苦的成语( )( )( ) 形容读书刻苦的成语啊给好评 kpa是什么物理单位啊?kpa是不是“一千帕斯卡”啊?与pa是什么关系啊?急. 形容独自刻苦读书的成语 蛋白质的有关习题 6.在一幅比例尺是1:2000000的地图上,量得甲,乙两地的距离是20CM.如果在另一幅地在一幅比例尺是1:2000000的地图上,量得甲,乙两地的距离是20CM。如果在另一幅地图上,甲乙两地的距离是10CM,另一 欧姆龙7200和7201,这2个型号有什么区别?哪个型号比较好? 蛋白质的相对分子质量怎么算?(具体点,最好能举个例题) 计算蛋白质分子相对质量某蛋白质分子有四条肽链(工604个氨基酸)组成,氨基酸的相对分子质量平均为130请计算该蛋白质分子的相对分子质量(要求写出算式) 欧姆龙血压计7200好吗帮朋友问的,想知道欧姆龙7200这款怎么样,用着方便吗,天津到哪里买比较好 一条绳长2米,第一次剪去5/2,第二次剪去的比第一次多3/1米,一共剪去多少米?列式 表示快的成语:看书快( )吃饭快( )走路快( )水流快( )变化快( )办事快( )写字画画快( )时间流逝快( ) 一条绳子长2分之1米,用去2分之1后,还剩2分之1.判断 关于蛋白质的一道生物计算题~脑残的我求第一小题的解啊~已知有一种多肽,其分子式为C55H70O19N10其完全水解后只得到下列四种氨基酸:甘氨酸C2~H5~O2~N,丙氨酸C3~H7~O2~N,谷氨酸C5~H9~O4~N,苯丙氨酸C9~ 蛋白质分子量的计算.已知20种氨基酸的平均分子量是128,现有一蛋白质分子由两条多肽链组成,共有肽键98个,此蛋白质分子量是: 形容读书勤奋的成语 Kgf/mm是什么单位?130Kgf/mm是什么意思? 写出表示快的成语;看书快; 水流快; 吃饭快; 变化快; 走路快; 办事快; 尿干化学分析蛋白质+-是什么意思?尿干化学分析结果,蛋白质的结果是+-参考值是- 不知道是什么意思?大夫没说出什么意思来,问问大家是什么意思? 在比例尺是1:2000000的地图上量得甲乙两个城市之间的距离是7.5cm,如果该画在比例尺为1:3000000的地图上,那麽图上的距离是多少cm? kpa代表什么计算单位 蛋白质 什么意思 在比例尺时1:2000000的地图上测的长是4.5cm,如果把长改画在比例尺是1:3000000的地图上,应画多长?要列算式,不要打一些横杠! kPa 是什么单位 化学上把氨基酸和蛋白质定义为同系物吗 什么东西别人看不到,而自己还可以欣赏到的那? 在比例尺为1:2000的地图上测AB两地间的图上距离为5CM,则AB两地间的实际距离为( )M -蛋白质什么意思 为啥子鸟晚上看不见东西? 已知空气的摩尔质量M=2.9×10-7kg/mol,成年人做一次深呼吸的吸入150cm3,空气,则做一次深呼吸,吸入空气质量约 kg,吸入气体分子数约为 (取一位有效数字)请详述计算过程, 鱼跃血压计和欧姆龙血压计,哪种校准? 为什么人在黑夜里看不见东西? 欧姆龙电子血压计 比较欧姆龙电子血压计 臂式 HEM-7200 和HEM-8102A 哪个更好一些 血压计是买欧姆龙的还是鱼跃的? 用什么东西在纸上写字看不见? 表示书读得、表示精读、表示泛读、表示读书刻苦的成语(各4个) 我在长沙想买台血压计,有谁知道是鱼跃的血压计好.还是欧姆龙血压计好. 有一根10米长的绳子,第一次剪去一半,第二次剪去剩余的一半,……剪七次后,剩下的绳子长多少米?A 六十四分之一米 B 一百二十八分之一米 C 六十四分之五米 D一百二十八分之五米 欧姆龙电子血压计怎么样? 在比例尺是1:2000000的地图上,量得两城市间的距离是6厘米,如果是在1:4000000的地图上,图上距离是多少厘米? 木啊有一根绳子长10米,第一次剪去一半,第二次减去剩余的一半,.剪7次后,剩下的绳子有多长? 欧姆龙的电子血压计怎么这么不准?前几年我妈妈买了个欧姆龙腕式血压计,错的离谱.家里备个听诊器和水银血压计.后来有人说是因为老年人,要用上臂的,上月买了个欧姆龙7051,还是不准,手量 在一幅比例尺是1比2000000的地图上,甲乙两地间的距离是10厘米,如果在比例尺是1比4000000的图上,这两地间的距离是多少?用正反比例解正反 比例的知识解 一根绳子,第一次用去了一半,第二次用去了剩下的一半多6米还剩3米,绳子长多少米 上大学有意思吗?怎样能让生活变得有趣点 关于蛋白质的相对分子质量有些蛋白质要考虑二硫键(—S—S—)相对分子质量.蛋白质的相对分子质量的计算中,若通过图示或其他形式告知蛋白质中有二硫键形成时,要考虑脱去氢的质量.一 电子血压计品牌选购?松下血压计比欧姆龙的质量差吗?差在哪里?为什么都说欧姆龙的好我选择松下了 蛋白质的相对分子质量怎么求啊 想买欧姆龙电子血压计7201一款,性能与价格如何? 欧姆龙血压计怎么样,能不能用的住啊,质量挺好的吗?还有么有其他比较好的品牌?具体哪里有卖的? 人生哲理幽默故事 蛋白质那里完全不懂啊……就是肽键与氨基酸的关系和水分子的关系 某蛋白质由n条肽链组成,氨基酸的平均分子量为a,控制蛋白质合成的基因含b个碱基对,则该蛋白质的分子量约()DNA(基因)中碱基数:信使RNA中碱基数:蛋白质中氨基酸数=6:3:1 这个是怎么看 Kpa.abs是什么单位 在生物高一必修一的第二节的蛋白质的结构和功能中,主要是氨基酸的结构不懂什么氨基羧基连在哪啊,还有肽链、肽键的关系,都不是很清楚, 关于生物蛋白质的计算题.急啊!有图!有一处不理解,就那个求基因的相对分子质量,为什么要减去,减的是什么?就这一问,其余都会.请求解答,多谢.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn